<?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>103513</bug_id>
          
          <creation_ts>2012-11-28 05:47:48 -0800</creation_ts>
          <short_desc>Provide the backend for exposing the layer tree to the Web Inspector</short_desc>
          <delta_ts>2013-05-03 07:03:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kenjibaheux</cc>
    
    <cc>leviw</cc>
    
    <cc>nduca</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>roger_fong</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>777812</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-28 05:47:48 -0800</bug_when>
    <thetext>It would be very useful for developers to find out information about the layer tree, especially layers that are composited in hardware and have a high impact on both the rendering performance of the page as well as its memory footprint. This bug covers the necessary WebCore parts to enable such a feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777827</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">ml</who>
    <bug_when>2012-11-28 05:59:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/12766602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777863</commentid>
    <comment_count>2</comment_count>
      <attachid>176477</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-28 06:36:45 -0800</bug_when>
    <thetext>Created attachment 176477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777908</commentid>
    <comment_count>3</comment_count>
      <attachid>176477</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-28 07:51:03 -0800</bug_when>
    <thetext>Comment on attachment 176477
Patch

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

Looks good! I guess Simon or Tim or others might want to take a look.

&gt; Source/WebCore/ChangeLog:18
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

Remove this line.

&gt; Source/WebCore/ChangeLog:20
&gt; +        No new tests (OOPS!).

Is there any way to write a LayoutTest for this?

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:57
&gt; +#include &quot;InspectorLayerTreeAgent.h&quot;

The implementation of InspectorLayerTreeAgent is protected by USE(ACCELERATED_COMPOSITING). You probably need the same guard here then, and below (or guard in the .h too).

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:917
&gt; +        if (InspectorLayerTreeAgent* layerTreeAgent = instrumentingAgents-&gt;inspectorLayerTreeAgent())
&gt; +            layerTreeAgent-&gt;reset();

Ditto.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:53
&gt; +namespace LayerTreeAgentState {
&gt; +static const char layerTreeAgentEnabled[] = &quot;layerTreeAgentEnabled&quot;;
&gt; +};

Is it typical to have a namespace for this strings?

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:66
&gt; +InspectorLayerTreeAgent::~InspectorLayerTreeAgent()
&gt; +{
&gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(0);

Use nullptr instead of 0 here.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:72
&gt; +void InspectorLayerTreeAgent::setFrontend(InspectorFrontend* frontend)
&gt; +{
&gt; +    ASSERT(frontend);
&gt; +    m_frontend = frontend-&gt;layertree();

Nit: frontEnd

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:78
&gt; +    m_frontend = 0;
&gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(0);

Use nullptr instead of 0 here.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:91
&gt; +    m_lastLayerId = 0;

Is 0 a valid id? Maybe you want a constant for invalidId?

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:134
&gt; +PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; InspectorLayerTreeAgent::buildObjectForRootLayer()
&gt; +{
&gt; +    return buildObjectForLayer(m_inspectedPage-&gt;mainFrame()-&gt;contentRenderer()-&gt;compositor()-&gt;rootRenderLayer(), true);

Is anything along this chain ever null? I guess there always has to be a root render layer.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:149
&gt; +    RefPtr&lt;TypeBuilder::LayerTree::Layer&gt; layerObject = TypeBuilder::LayerTree::Layer::create()
&gt; +        .setId(bind(renderLayer))
&gt; +        .setIsRoot(renderLayer-&gt;isRootLayer())
&gt; +        .setParentId(renderLayer-&gt;parent() ? bind(renderLayer-&gt;parent()) : 0)
&gt; +        .setNodeId(node ? m_instrumentingAgents-&gt;inspectorDOMAgent()-&gt;idForNode(node) : 0)
&gt; +        .setBounds(buildObjectForIntRect(enclosingIntRect(renderLayer-&gt;localBoundingBox())))
&gt; +        .setIsComposited(isComposited);

I know this is pretty common in inspector code, but I&apos;m not a huge fan of chaining like this. It looks too much like JavaScript/JQuery code :)

But more importantly, it&apos;s a pain to debug because you have to step in and out lots of times (I should check if lldb is smart about line numbers there).

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:201
&gt; +    return TypeBuilder::LayerTree::IntRect::create()
&gt; +        .setX(rect.x())
&gt; +        .setY(rect.y())
&gt; +        .setWidth(rect.width())
&gt; +        .setHeight(rect.height()).release();

Ditto on the chaining.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:209
&gt; +    int id = m_documentLayerToIdMap.get(layer);
&gt; +    if (id)
&gt; +        return id;
&gt; +    id = ++m_lastLayerId;

So this tells me that 0 is not a valid id, which I think answers the question above.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:34
&gt; +#include &quot;FrameView.h&quot;

Do you need this?

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:39
&gt; +#include &quot;ScriptState.h&quot;

Or this?

&gt; Source/WebCore/inspector/InstrumentingAgents.h:165
&gt; +    InspectorLayerTreeAgent* m_inspectorLayerTreeAgent;

Maybe ditto the comment above about USE(ACCELERATED_COMPOSITING)

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:32
&gt; +#include &quot;InspectorLayerTreeAgent.h&quot;

I think you can just do class InspectorLayerTreeAgent here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777909</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-28 07:52:40 -0800</bug_when>
    <thetext>Do the efl, qt and gtk ports all have ACCELERATED_COMPOSITING enabled? If not, then I guess my comments are wrong since they passed EWS. You could try building with it off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777959</commentid>
    <comment_count>5</comment_count>
      <attachid>176477</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-28 09:02:48 -0800</bug_when>
    <thetext>Comment on attachment 176477
Patch

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

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:69
&gt; +    bool enabled() { return m_enabled; }

Should be const.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:85
&gt; +    PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; buildObjectForLayer(RenderLayer*, bool);

Should be const RenderLayer*

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:86
&gt; +    PassRefPtr&lt;TypeBuilder::LayerTree::IntRect&gt; buildObjectForIntRect(IntRect);

const IntRect&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777963</commentid>
    <comment_count>6</comment_count>
      <attachid>176477</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-11-28 09:07:18 -0800</bug_when>
    <thetext>Comment on attachment 176477
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:85
&gt;&gt; +    PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; buildObjectForLayer(RenderLayer*, bool);
&gt; 
&gt; Should be const RenderLayer*

Boolean params :(  I&apos;d rather a more descriptive parameter, or leave it out altogether since it&apos;s always passed as true in the code here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777984</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-28 09:34:55 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 176477 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176477&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:85
&gt; &gt;&gt; +    PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; buildObjectForLayer(RenderLayer*, bool);
&gt; &gt; 
&gt; &gt; Should be const RenderLayer*
&gt; 
&gt; Boolean params :(  I&apos;d rather a more descriptive parameter, or leave it out altogether since it&apos;s always passed as true in the code here.

I think it should be left out. A previous iteration of this patch allowed to get details without recursing through children but there&apos;s no use for this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778011</commentid>
    <comment_count>8</comment_count>
      <attachid>176477</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-28 10:12:02 -0800</bug_when>
    <thetext>Comment on attachment 176477
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:20
&gt;&gt; +        No new tests (OOPS!).
&gt; 
&gt; Is there any way to write a LayoutTest for this?

Yes, you should write a protocol test. See LayoutTests/inspector-protocol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778017</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-28 10:16:31 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 176477 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176477&amp;amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:20
&gt; &gt;&gt; +        No new tests (OOPS!).
&gt; &gt; 
&gt; &gt; Is there any way to write a LayoutTest for this?
&gt; 
&gt; Yes, you should write a protocol test. See LayoutTests/inspector-protocol.

Will do. Thanks for pointing that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778018</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-28 10:17:13 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/ChangeLog:20
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; Is there any way to write a LayoutTest for this?

Per Timothy&apos;s comment, we can and I will look into this.
 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:57
&gt; &gt; +#include &quot;InspectorLayerTreeAgent.h&quot;
&gt; 
&gt; The implementation of InspectorLayerTreeAgent is protected by USE(ACCELERATED_COMPOSITING). You probably need the same guard here then, and below (or guard in the .h too).

I was wondering about this, but I noticed that RenderLayerCompositor, which has its implementation guarded by the same condition, has not such condition for its header. I simply copied that example, do you know why it is done this way with RenderLayerCompositor and why this should differ?
 
&gt; &gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:917
&gt; &gt; +        if (InspectorLayerTreeAgent* layerTreeAgent = instrumentingAgents-&gt;inspectorLayerTreeAgent())
&gt; &gt; +            layerTreeAgent-&gt;reset();
&gt; 
&gt; Ditto.

Indeed, will change.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:53
&gt; &gt; +namespace LayerTreeAgentState {
&gt; &gt; +static const char layerTreeAgentEnabled[] = &quot;layerTreeAgentEnabled&quot;;
&gt; &gt; +};
&gt; 
&gt; Is it typical to have a namespace for this strings?

I just mimicked how other agents do this type of thing, and the ones I looked at were using namespaces.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:66
&gt; &gt; +InspectorLayerTreeAgent::~InspectorLayerTreeAgent()
&gt; &gt; +{
&gt; &gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(0);
&gt; 
&gt; Use nullptr instead of 0 here.

Will do.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:72
&gt; &gt; +void InspectorLayerTreeAgent::setFrontend(InspectorFrontend* frontend)
&gt; &gt; +{
&gt; &gt; +    ASSERT(frontend);
&gt; &gt; +    m_frontend = frontend-&gt;layertree();
&gt; 
&gt; Nit: frontEnd

All other code in WebCore uses frontend / setFrontend.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:78
&gt; &gt; +    m_frontend = 0;
&gt; &gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(0);
&gt; 
&gt; Use nullptr instead of 0 here.

Will do.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:91
&gt; &gt; +    m_lastLayerId = 0;
&gt; 
&gt; Is 0 a valid id? Maybe you want a constant for invalidId?

You got the answer to that question further down.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:134
&gt; &gt; +PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; InspectorLayerTreeAgent::buildObjectForRootLayer()
&gt; &gt; +{
&gt; &gt; +    return buildObjectForLayer(m_inspectedPage-&gt;mainFrame()-&gt;contentRenderer()-&gt;compositor()-&gt;rootRenderLayer(), true);
&gt; 
&gt; Is anything along this chain ever null? I guess there always has to be a root render layer.

In my testing, I didn&apos;t find a situation that something in this chain could be null. I don&apos;t know if that&apos;s absolutely true though.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:149
&gt; &gt; +    RefPtr&lt;TypeBuilder::LayerTree::Layer&gt; layerObject = TypeBuilder::LayerTree::Layer::create()
&gt; &gt; +        .setId(bind(renderLayer))
&gt; &gt; +        .setIsRoot(renderLayer-&gt;isRootLayer())
&gt; &gt; +        .setParentId(renderLayer-&gt;parent() ? bind(renderLayer-&gt;parent()) : 0)
&gt; &gt; +        .setNodeId(node ? m_instrumentingAgents-&gt;inspectorDOMAgent()-&gt;idForNode(node) : 0)
&gt; &gt; +        .setBounds(buildObjectForIntRect(enclosingIntRect(renderLayer-&gt;localBoundingBox())))
&gt; &gt; +        .setIsComposited(isComposited);
&gt; 
&gt; I know this is pretty common in inspector code, but I&apos;m not a huge fan of chaining like this. It looks too much like JavaScript/JQuery code :)
&gt; 
&gt; But more importantly, it&apos;s a pain to debug because you have to step in and out lots of times (I should check if lldb is smart about line numbers there).

I agree with both your points, but it appears that all non-optional properties have to be set up this way. I had tried to make a call to create() and then have a .set() call per property but this lead to build failures. Maybe someone more familiar with the TypeBuilder system could shed more light on this issue.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:201
&gt; &gt; +    return TypeBuilder::LayerTree::IntRect::create()
&gt; &gt; +        .setX(rect.x())
&gt; &gt; +        .setY(rect.y())
&gt; &gt; +        .setWidth(rect.width())
&gt; &gt; +        .setHeight(rect.height()).release();
&gt; 
&gt; Ditto on the chaining.
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:209
&gt; &gt; +    int id = m_documentLayerToIdMap.get(layer);
&gt; &gt; +    if (id)
&gt; &gt; +        return id;
&gt; &gt; +    id = ++m_lastLayerId;
&gt; 
&gt; So this tells me that 0 is not a valid id, which I think answers the question above.
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:34
&gt; &gt; +#include &quot;FrameView.h&quot;
&gt; 
&gt; Do you need this?
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:39
&gt; &gt; +#include &quot;ScriptState.h&quot;
&gt; 
&gt; Or this?

Leftovers from the original agent I used as a model. I will check and likely remove.
 
&gt; &gt; Source/WebCore/inspector/InstrumentingAgents.h:165
&gt; &gt; +    InspectorLayerTreeAgent* m_inspectorLayerTreeAgent;
&gt; 
&gt; Maybe ditto the comment above about USE(ACCELERATED_COMPOSITING)
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.h:32
&gt; &gt; +#include &quot;InspectorLayerTreeAgent.h&quot;
&gt; 
&gt; I think you can just do class InspectorLayerTreeAgent here.

Will change.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778054</commentid>
    <comment_count>11</comment_count>
      <attachid>176477</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-28 10:46:41 -0800</bug_when>
    <thetext>Comment on attachment 176477
Patch

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

Overall, looks like it is going the right way. Added a bunch of comments inline.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Provide the backend for exposing the layer tree to the Web Inspector

Please use webkit.org/new-inspector-bug template for filing bugs so that active inspector contributors were getting into the cc.

&gt; Source/WebCore/inspector/Inspector.json:3246
&gt; +        &quot;domain&quot;: &quot;LayerTree&quot;,

You should hide entire domain

&gt; Source/WebCore/inspector/Inspector.json:3265
&gt; +                    { &quot;name&quot;: &quot;id&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;The unique id for this layer.&quot; },

Should be called layerId and be of type &quot;LayerId&quot; that is of type integer.

&gt; Source/WebCore/inspector/Inspector.json:3266
&gt; +                    { &quot;name&quot;: &quot;isRoot&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Indicates whether this layer is the root.&quot; },

You might want to make it optional and imply that it is not root when omitted.

&gt; Source/WebCore/inspector/Inspector.json:3267
&gt; +                    { &quot;name&quot;: &quot;parentId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Id of the parent layer.&quot; },

type LayerId

&gt; Source/WebCore/inspector/Inspector.json:3268
&gt; +                    { &quot;name&quot;: &quot;nodeId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Id of the node to which this layer is attached.&quot; },

type is $ref DOM.NodeId

&gt; Source/WebCore/inspector/InspectorDOMAgent.h:202
&gt; +    int idForNode(Node*);

It is missing by design. Whoever converts node to id must realize that it is being pushed to the front-end, i.e. with the significant performance penalties.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:61
&gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(this);

You should only add this agent into the instrumenting agents list from enable (and remove from disable). Only limited set of core agents are allowed to exist at all times.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:112
&gt; +    if (!m_enabled)

You will not need these checks once you limit the instrumenting lifespan of the agent.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:115
&gt; +    m_frontend-&gt;layerTreeWillChange();

Why is this signal needed?

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:123
&gt; +    m_frontend-&gt;layerTreeDidChange(buildObjectForRootLayer());

Could this be done on a more granular basis? What is the average payload size here? We tend to send events to the interested parties only. I.e. only after the tree has been requested.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:147
&gt; +        .setNodeId(node ? m_instrumentingAgents-&gt;inspectorDOMAgent()-&gt;idForNode(node) : 0)

This might be expensive. How many layers do you expect? Pushing node to a front-end pushes it with the whole ancestors path.

&gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:209
&gt;&gt; +    id = ++m_lastLayerId;
&gt; 
&gt; So this tells me that 0 is not a valid id, which I think answers the question above.

Please use the (poorly named) IdentifiersFactory instead

&gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:69
&gt;&gt; +    bool enabled() { return m_enabled; }
&gt; 
&gt; Should be const.

Why is it public at all?

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:431
&gt; +    // Inform the inspector that we&apos;re starting a compositing update.

Should be InspectorInstrumentation::layerTreeWillChange.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:519
&gt; +    if (layerTreeInspector())

ditto

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:390
&gt; +    InspectorLayerTreeAgent* layerTreeInspector();

WebCore is not allowed to talk to agents, it should be done via InspectorInstrumentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778198</commentid>
    <comment_count>12</comment_count>
      <attachid>176477</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-28 12:34:53 -0800</bug_when>
    <thetext>Comment on attachment 176477
Patch

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

&gt; Source/WebCore/CMakeLists.txt:1582
&gt; +    inspector/InspectorLayerTreeAgent.cpp

please keep the entries sorted

&gt; Source/WebCore/GNUmakefile.list.am:3699
&gt; +	Source/WebCore/inspector/InspectorLayerTreeAgent.cpp \
&gt; +	Source/WebCore/inspector/InspectorLayerTreeAgent.h \

ditto

&gt; Source/WebCore/Target.pri:759
&gt; +    inspector/InspectorLayerTreeAgent.cpp \

ditto

&gt; Source/WebCore/Target.pri:1901
&gt; +    inspector/InspectorLayerTreeAgent.h \

ditto

&gt; Source/WebCore/WebCore.gypi:2852
&gt; +            &apos;inspector/InspectorLayerTreeAgent.cpp&apos;,
&gt; +            &apos;inspector/InspectorLayerTreeAgent.h&apos;,

ditto

&gt;&gt; Source/WebCore/inspector/Inspector.json:3266
&gt;&gt; +                    { &quot;name&quot;: &quot;isRoot&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Indicates whether this layer is the root.&quot; },
&gt; 
&gt; You might want to make it optional and imply that it is not root when omitted.

Is it necessary at all? It appears that parentId could be used to check for root instead. Actually, it looks like with current implementation you don&apos;t need either isRoot or parent, as these may be easily deduced from the tree that you return.

&gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:53
&gt;&gt; +};
&gt; 
&gt; Is it typical to have a namespace for this strings?

yes, at least for the rest of inspector.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:137
&gt; +PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; InspectorLayerTreeAgent::buildObjectForLayer(RenderLayer* renderLayer, bool deep)

is deep ever false?

&gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:149
&gt;&gt; +        .setIsComposited(isComposited);
&gt; 
&gt; I know this is pretty common in inspector code, but I&apos;m not a huge fan of chaining like this. It looks too much like JavaScript/JQuery code :)
&gt; 
&gt; But more importantly, it&apos;s a pain to debug because you have to step in and out lots of times (I should check if lldb is smart about line numbers there).

It&apos;s the only practical way to do it -- the intermediate types that each setFoo() returns are not expected to appear explicitly in the client code (it would be an ugly template with an integer parameter set to a bitmask of not-yet-set fields -- we use this to assure at compile time that all fields are set before we send the object)

&gt; Source/WebCore/inspector/InstrumentingAgents.h:43
&gt; +class InspectorLayerTreeAgent;

sorting problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778203</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-28 12:36:51 -0800</bug_when>
    <thetext>Btw, is there a mock for the front-end part?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778250</commentid>
    <comment_count>14</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-28 13:05:32 -0800</bug_when>
    <thetext>We are not implementing the front-end side in WebKit. This is a backend only change to support a Safari Inspector feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778294</commentid>
    <comment_count>15</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-28 13:47:05 -0800</bug_when>
    <thetext>Hm. We typically (In reply to comment #14)
&gt; We are not implementing the front-end side in WebKit. This is a backend only change to support a Safari Inspector feature.

I think we need to somehow agree on the policy wrt exposing inspector APIs for proprietary clients. Like this new agent clearly adds maintenance cost for WebKit without clear benefit to the port owners. Until this moment, every feature exposed via the protocol had a client living within the WebKit repository. I am not saying that we should have such a strict rule (I can clearly see automation and other commands added to the remote debugging protocol with no UI exposed in the inspector). But in this case, it sounds like exposing layer information would be useful for the Web Inspector users and I don&apos;t see why one of the ports would invest into the backend, but not the front-end for it. Should this be raised on webkit-dev?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778321</commentid>
    <comment_count>16</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-28 14:08:46 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Hm. We typically (In reply to comment #14)
&gt; &gt; We are not implementing the front-end side in WebKit. This is a backend only change to support a Safari Inspector feature.
&gt; 
&gt; I think we need to somehow agree on the policy 0 exposing inspector APIs for proprietary clients. Like this new agent clearly adds maintenance cost for WebKit without clear benefit to the port owners. Until this moment, every feature exposed via the protocol had a client living within the WebKit repository. I am not saying that we should have such a strict rule (I can clearly see automation and other commands added to the remote debugging protocol with no UI exposed in the inspector). But in this case, it sounds like exposing layer information would be useful for the Web Inspector users and I don&apos;t see why one of the ports would invest into the backend, but not the front-end for it. Should this be raised on webkit-dev?

In my opinion, this is not too different from the V8 centric features that have been added to the protocol. Those are changes that benefit only one port — Chromium — and add maintenance cost to the project as a whole. Your port does maintain those parts, but the burden is mostly on other ports to make them work for JSC.

Someone is free to implement a front-end using this new agent in WebKit, but we don&apos;t intend to do it. Antoine is implementing a front-end for our Inspector as he goes. We also intended to maintain it, just like you maintain the V8 centric features.

Testing at the protocol level and maintenance guarantees should be sufficient to grant this agent the privilege of being added.

Feel free to raise the issue on webkit-dev if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778338</commentid>
    <comment_count>17</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-28 14:20:55 -0800</bug_when>
    <thetext>&gt; In my opinion, this is not too different from the V8 centric features that have been added to the protocol. Those are changes that benefit only one port — Chromium — and add maintenance cost to the project as a whole. Your port does maintain those parts, but the burden is mostly on other ports to make them work for JSC.

I don&apos;t think this analogy applies. In case of V8 vs JSC:
- Both front-end and backend were open source, belonging to WebKit
- We were on the best-effort path wrt having JSC supported
- Most of the features are now supported in JSC

In this case, we are talking about:
- Proprietary front-end putting maintenance cost on the WebKit
- No intention to contribute front-end to WebKit
- No clear plan for these features to be ever supported in WebKit inspector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778345</commentid>
    <comment_count>18</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-11-28 14:28:31 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; In my opinion, this is not too different from the V8 centric features that have been added to the protocol. Those are changes that benefit only one port — Chromium — and add maintenance cost to the project as a whole. Your port does maintain those parts, but the burden is mostly on other ports to make them work for JSC.
&gt; 
&gt; I don&apos;t think this analogy applies. In case of V8 vs JSC:
&gt; - Both front-end and backend were open source, belonging to WebKit
&gt; - We were on the best-effort path wrt having JSC supported
&gt; - Most of the features are now supported in JSC
&gt; 
&gt; In this case, we are talking about:
&gt; - Proprietary front-end putting maintenance cost on the WebKit
&gt; - No intention to contribute front-end to WebKit
&gt; - No clear plan for these features to be ever supported in WebKit inspector

V8 is not in the WebKit repository, nor does it belong to WebKit. But I digress.

This is about adding API. Most API added to WebKit (CSS, DOM, etc.) does not have a client in WebKit using them. The Inspector protocol has been the exception to this, not the rule. I don&apos;t think everything added to the Inspector protocol API should require a client in WebKit as long as it is tested and maintained by interested parties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778924</commentid>
    <comment_count>19</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-29 04:55:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 176477 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176477&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:69
&gt; &gt; +    bool enabled() { return m_enabled; }
&gt; 
&gt; Should be const.

I&apos;m actually removing this method altogether, it&apos;s not used and serves no purpose.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:85
&gt; &gt; +    PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; buildObjectForLayer(RenderLayer*, bool);
&gt; 
&gt; Should be const RenderLayer*

This proves problematic as there is a call to updateLayerListsIfNeeded() make to the RenderLayer in that method.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:86
&gt; &gt; +    PassRefPtr&lt;TypeBuilder::LayerTree::IntRect&gt; buildObjectForIntRect(IntRect);
&gt; 
&gt; const IntRect&amp;

Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778928</commentid>
    <comment_count>20</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-29 05:07:02 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 176477 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176477&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/CMakeLists.txt:1582
&gt; &gt; +    inspector/InspectorLayerTreeAgent.cpp
&gt; 
&gt; please keep the entries sorted

I&apos;ll be updating this file and all the others you mentioned to preserve sorting.
 
&gt; &gt;&gt; Source/WebCore/inspector/Inspector.json:3266
&gt; &gt;&gt; +                    { &quot;name&quot;: &quot;isRoot&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Indicates whether this layer is the root.&quot; },
&gt; &gt; 
&gt; &gt; You might want to make it optional and imply that it is not root when omitted.
&gt; 
&gt; Is it necessary at all? It appears that parentId could be used to check for root instead. Actually, it looks like with current implementation you don&apos;t need either isRoot or parent, as these may be easily deduced from the tree that you return.

You&apos;re correct, I&apos;m removing both .isRoot and .parentId.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:137
&gt; &gt; +PassRefPtr&lt;TypeBuilder::LayerTree::Layer&gt; InspectorLayerTreeAgent::buildObjectForLayer(RenderLayer* renderLayer, bool deep)
&gt; 
&gt; is deep ever false?

No, I&apos;m removing this parameter.
 
Thanks for the useful feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778937</commentid>
    <comment_count>21</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-29 05:22:36 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 176477 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176477&amp;action=review
&gt; 
&gt; Overall, looks like it is going the right way. Added a bunch of comments inline.

Thanks a lot for your feedback. I&apos;m new to WebCore development, so I really appreciate this, and I have some more questions. Pardon me if some of this is obvious!
 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Provide the backend for exposing the layer tree to the Web Inspector
&gt; 
&gt; Please use webkit.org/new-inspector-bug template for filing bugs so that active inspector contributors were getting into the cc.

Will do in the future.
 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3246
&gt; &gt; +        &quot;domain&quot;: &quot;LayerTree&quot;,
&gt; 
&gt; You should hide entire domain

Will change.
 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3265
&gt; &gt; +                    { &quot;name&quot;: &quot;id&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;The unique id for this layer.&quot; },
&gt; 
&gt; Should be called layerId and be of type &quot;LayerId&quot; that is of type integer.

Good point, will change.
 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3266
&gt; &gt; +                    { &quot;name&quot;: &quot;isRoot&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;Indicates whether this layer is the root.&quot; },
&gt; 
&gt; You might want to make it optional and imply that it is not root when omitted.

Per Andrey&apos;s feedback, I will remove this property as well as parentId.
 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3267
&gt; &gt; +                    { &quot;name&quot;: &quot;parentId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Id of the parent layer.&quot; },
&gt; 
&gt; type LayerId

Removing this property (see above).
 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3268
&gt; &gt; +                    { &quot;name&quot;: &quot;nodeId&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Id of the node to which this layer is attached.&quot; },
&gt; 
&gt; type is $ref DOM.NodeId

Will change.
 
&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.h:202
&gt; &gt; +    int idForNode(Node*);
&gt; 
&gt; It is missing by design. Whoever converts node to id must realize that it is being pushed to the front-end, i.e. with the significant performance penalties.

OK. The intent is that the front-end should be able to get from a layer to its DOM node for inspection. I understand it&apos;s expensive to push the node for each and every node with a RenderLayer. Do you think it would be appropriate to add a new method on this agent to get the DOM id for a given RenderLayer? That way the front-end would request the id as needed only.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:61
&gt; &gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(this);
&gt; 
&gt; You should only add this agent into the instrumenting agents list from enable (and remove from disable). Only limited set of core agents are allowed to exist at all times.

Good point, will do.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:112
&gt; &gt; +    if (!m_enabled)
&gt; 
&gt; You will not need these checks once you limit the instrumenting lifespan of the agent.

Will remove.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:115
&gt; &gt; +    m_frontend-&gt;layerTreeWillChange();
&gt; 
&gt; Why is this signal needed?

It&apos;s really not, will remove.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:123
&gt; &gt; +    m_frontend-&gt;layerTreeDidChange(buildObjectForRootLayer());
&gt; 
&gt; Could this be done on a more granular basis? What is the average payload size here? We tend to send events to the interested parties only. I.e. only after the tree has been requested.

I honestly don&apos;t have enough data to provide you with a payload size. Right now, the agent is only enabled once the developer asks for the layer tree to be displayed (ie. once .enable() is called). I&apos;m not entirely sure what the lifecycle of the agent is currently, but should we make it so that it&apos;s disabled once the relevant piece of UI for it is not visible thus limiting the amount of information sent through this agent?

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:147
&gt; &gt; +        .setNodeId(node ? m_instrumentingAgents-&gt;inspectorDOMAgent()-&gt;idForNode(node) : 0)
&gt; 
&gt; This might be expensive. How many layers do you expect? Pushing node to a front-end pushes it with the whole ancestors path.

There may be hundreds of layers. Like I said above, I think we should be able to provide the node id and push the nodes only on demand when the front-end asks for it (through the corresponding RenderLayer id). Sounds good?

&gt; &gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:209
&gt; &gt;&gt; +    id = ++m_lastLayerId;
&gt; &gt; 
&gt; &gt; So this tells me that 0 is not a valid id, which I think answers the question above.
&gt; 
&gt; Please use the (poorly named) IdentifiersFactory instead

I will look into this, thanks for the pointer.

&gt; &gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.h:69
&gt; &gt;&gt; +    bool enabled() { return m_enabled; }
&gt; &gt; 
&gt; &gt; Should be const.
&gt; 
&gt; Why is it public at all?

I&apos;m removing this useless method.

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:431
&gt; &gt; +    // Inform the inspector that we&apos;re starting a compositing update.
&gt; 
&gt; Should be InspectorInstrumentation::layerTreeWillChange.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:519
&gt; &gt; +    if (layerTreeInspector())
&gt; 
&gt; ditto

Are you suggesting I add a new static method on InspectorInstrumentation to allow communication between WebCore and the agent? If so, I will do this, thanks for pointing it out.

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.h:390
&gt; &gt; +    InspectorLayerTreeAgent* layerTreeInspector();
&gt; 
&gt; WebCore is not allowed to talk to agents, it should be done via InspectorInstrumentation.

Noted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779079</commentid>
    <comment_count>22</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-29 09:20:56 -0800</bug_when>
    <thetext>&gt; OK. The intent is that the front-end should be able to get from a layer to its DOM node for inspection. I understand it&apos;s expensive to push the node for each and every node with a RenderLayer. Do you think it would be appropriate to add a new method on this agent to get the DOM id for a given RenderLayer? That way the front-end would request the id as needed only.

Given that you maintain ids for your layers, adding protocol methods for resolving layer to a node and vice versa would make sense to me.

&gt; I honestly don&apos;t have enough data to provide you with a payload size. Right now, the agent is only enabled once the developer asks for the layer tree to be displayed (ie. once .enable() is called). I&apos;m not entirely sure what the lifecycle of the agent is currently, but should we make it so that it&apos;s disabled once the relevant piece of UI for it is not visible thus limiting the amount of information sent through this agent?

I guess you could start as is and add greater granularity as you go. An option would be to send &quot;layerTreeUpdated&quot; invalidation signal with no parameters and make client re-request the tree on demand. So that you did not load the protocol while say the tree is collapsed or offscreen.

&gt; Are you suggesting I add a new static method on InspectorInstrumentation to allow communication between WebCore and the agent? If so, I will do this, thanks for pointing it out.

Yep. You should ack like the other agents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779134</commentid>
    <comment_count>23</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-29 10:17:05 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; OK. The intent is that the front-end should be able to get from a layer to its DOM node for inspection. I understand it&apos;s expensive to push the node for each and every node with a RenderLayer. Do you think it would be appropriate to add a new method on this agent to get the DOM id for a given RenderLayer? That way the front-end would request the id as needed only.
&gt; 
&gt; Given that you maintain ids for your layers, adding protocol methods for resolving layer to a node and vice versa would make sense to me.

I&apos;m adding a new &quot;nodeIdForLayerId&quot; method on the agent. There will likely be a need for the reverse, but I plan on addressing this in a future patch when it becomes a necessity.
 
&gt; &gt; I honestly don&apos;t have enough data to provide you with a payload size. Right now, the agent is only enabled once the developer asks for the layer tree to be displayed (ie. once .enable() is called). I&apos;m not entirely sure what the lifecycle of the agent is currently, but should we make it so that it&apos;s disabled once the relevant piece of UI for it is not visible thus limiting the amount of information sent through this agent?
&gt; 
&gt; I guess you could start as is and add greater granularity as you go. An option would be to send &quot;layerTreeUpdated&quot; invalidation signal with no parameters and make client re-request the tree on demand. So that you did not load the protocol while say the tree is collapsed or offscreen.

That sounds like a good plan.
 
&gt; &gt; Are you suggesting I add a new static method on InspectorInstrumentation to allow communication between WebCore and the agent? If so, I will do this, thanks for pointing it out.
&gt; 
&gt; Yep. You should ack like the other agents.

I got this working along with fixes for all your other comments, I plan on sending a revised patch for review later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779449</commentid>
    <comment_count>24</comment_count>
      <attachid>176819</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-29 14:37:08 -0800</bug_when>
    <thetext>Created attachment 176819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779451</commentid>
    <comment_count>25</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-29 14:39:11 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=176819) [details]
&gt; Patch

This new patch should address all the comments made so far, save for one: no LayoutTests are added. I plan on doing this in a final patch tomorrow if this patch gets a positive review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779458</commentid>
    <comment_count>26</comment_count>
      <attachid>176819</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 14:50:07 -0800</bug_when>
    <thetext>Comment on attachment 176819
Patch

Attachment 176819 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15036655</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779460</commentid>
    <comment_count>27</comment_count>
      <attachid>176819</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-29 14:51:31 -0800</bug_when>
    <thetext>Comment on attachment 176819
Patch

Attachment 176819 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15059024</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779465</commentid>
    <comment_count>28</comment_count>
      <attachid>176819</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-29 14:56:31 -0800</bug_when>
    <thetext>Comment on attachment 176819
Patch

Attachment 176819 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15055119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779532</commentid>
    <comment_count>29</comment_count>
      <attachid>176819</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-29 15:40:52 -0800</bug_when>
    <thetext>Comment on attachment 176819
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:3314
&gt; +                    { &quot;name&quot;: &quot;layerTree&quot;, &quot;$ref&quot;: &quot;Layer&quot; }

I think this should either be empty of contain layerId of the changed layer tree root.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:72
&gt; +    ASSERT(frontend);

Agents know it is non-NULL. I&apos;d push this check into the call site, but frontend instance is created there :)

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:84
&gt; +    m_enabled = m_state-&gt;getBoolean(LayerTreeAgentState::layerTreeAgentEnabled);

You should call enable here so that m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(this); is executed.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:95
&gt; +    if (m_enabled)

We only mirror m_state-&gt;setBoolean(LayerTreeAgentState::layerTreeAgentEnabled) using m_enabled in the hot code. I.e. in core agents that are instrumenting at all times and need to return fast. In your case, using m_state should suffice.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:119
&gt; +    UNUSED_PARAM(error);

Replace ErrorString* error with ErrorString* above and remove this macro.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:202
&gt; +void InspectorLayerTreeAgent::unbind(const RenderLayer* layer)

Given that you store raw pointers to the render layer in the map and don&apos;t call this method, upon calling nodeIdForLayerId you are at rist of running into use after free. You should unbind upon layer destruction.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:220
&gt; +    int documentNodeId = inspectorDOMAgent-&gt;boundNodeId(node-&gt;ownerDocument());

This will not work for the iframes - you will get 0 here.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:221
&gt; +    *resultNodeId = inspectorDOMAgent-&gt;pushNodeToFrontend(errorString, documentNodeId, node);

You should not use protocol methods when interacting between agents. In this case you need InspectorDOMAgent::pushNodePathToFrontend which is private. You should add public method that pushes node for the RenderLayer* into the InspectorDOMAgent instead. We don&apos;t want to make pushNodePathToFrontend(Node*) public to make sure that it is not misused (i.e. not called unless the user explicitly asked for document from the DOM domain). Using RenderLayer* in the API might stop such a misuse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780147</commentid>
    <comment_count>30</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-30 08:47:43 -0800</bug_when>
    <thetext>Thanks for the comments Pavel. A new patch will be out momentarily.

(In reply to comment #29)
&gt; (From update of attachment 176819 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176819&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3314
&gt; &gt; +                    { &quot;name&quot;: &quot;layerTree&quot;, &quot;$ref&quot;: &quot;Layer&quot; }
&gt; 
&gt; I think this should either be empty of contain layerId of the changed layer tree root.

Agreed. The event should be just a notification and the front-end should call .getLayerTree() if interested in the result. I&apos;ll remove the parameter altogether.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:72
&gt; &gt; +    ASSERT(frontend);
&gt; 
&gt; Agents know it is non-NULL. I&apos;d push this check into the call site, but frontend instance is created there :)

I will remove the ASSERT altogether.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:84
&gt; &gt; +    m_enabled = m_state-&gt;getBoolean(LayerTreeAgentState::layerTreeAgentEnabled);
&gt; 
&gt; You should call enable here so that m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(this); is executed.

Good point, will change that.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:95
&gt; &gt; +    if (m_enabled)
&gt; 
&gt; We only mirror m_state-&gt;setBoolean(LayerTreeAgentState::layerTreeAgentEnabled) using m_enabled in the hot code. I.e. in core agents that are instrumenting at all times and need to return fast. In your case, using m_state should suffice.

Will change.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:119
&gt; &gt; +    UNUSED_PARAM(error);
&gt; 
&gt; Replace ErrorString* error with ErrorString* above and remove this macro.

Will change.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:202
&gt; &gt; +void InspectorLayerTreeAgent::unbind(const RenderLayer* layer)
&gt; 
&gt; Given that you store raw pointers to the render layer in the map and don&apos;t call this method, upon calling nodeIdForLayerId you are at rist of running into use after free. You should unbind upon layer destruction.

I will make a change such that when the RenderLayerCompositor removes a layer, the agent gets a notification and unbinds as a result.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:220
&gt; &gt; +    int documentNodeId = inspectorDOMAgent-&gt;boundNodeId(node-&gt;ownerDocument());
&gt; 
&gt; This will not work for the iframes - you will get 0 here.
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:221
&gt; &gt; +    *resultNodeId = inspectorDOMAgent-&gt;pushNodeToFrontend(errorString, documentNodeId, node);
&gt; 
&gt; You should not use protocol methods when interacting between agents. In this case you need InspectorDOMAgent::pushNodePathToFrontend which is private. You should add public method that pushes node for the RenderLayer* into the InspectorDOMAgent instead. We don&apos;t want to make pushNodePathToFrontend(Node*) public to make sure that it is not misused (i.e. not called unless the user explicitly asked for document from the DOM domain). Using RenderLayer* in the API might stop such a misuse.

I will add a new method to the DOM agent to push the node of a given RenderLayer instead, it&apos;ll be a lot easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780149</commentid>
    <comment_count>31</comment_count>
      <attachid>176977</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-30 08:53:43 -0800</bug_when>
    <thetext>Created attachment 176977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780150</commentid>
    <comment_count>32</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-30 08:55:23 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=176977) [details]
&gt; Patch

This new patch should address Pavel&apos;s latest comments and fix reported build failures on platforms other than Mac. Note that LayoutTests are still pending, I plan on doing this in a final patch once the basic WebCore patch gets a positive review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780404</commentid>
    <comment_count>33</comment_count>
      <attachid>176977</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-30 14:03:29 -0800</bug_when>
    <thetext>Comment on attachment 176977
Patch

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

Overall, it looks good, I think it is Ok to proceed with the test.

&gt; Source/WebCore/inspector/Inspector.json:3264
&gt; +                &quot;hidden&quot;: true

nit: here and below, no need to hide methods of the hidden domain.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:218
&gt; +    const RenderLayer* renderLayer = m_idToLayer.get(layerId);

this can be 0 and you should return an error for this.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:514
&gt; +    InspectorInstrumentation::layerTreeDidChange(this-&gt;page());

just page() ?

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:520
&gt; +    InspectorInstrumentation::renderLayerDestroyed(this-&gt;page(), renderLayer);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780460</commentid>
    <comment_count>34</comment_count>
      <attachid>176977</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-30 15:08:15 -0800</bug_when>
    <thetext>Comment on attachment 176977
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:514
&gt;&gt; +    InspectorInstrumentation::layerTreeDidChange(this-&gt;page());
&gt; 
&gt; just page() ?

So the layer tree managed by InspectorLayerTreeAgent has regular render layers, yet you only update it when in the accelerated compositing mode -- this looks a bit confusing. Isn&apos;t there use in the layer tree if the accelerated compositing is not used? Should we make it explicit that the tree is only available in accelerated compositing mode?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780463</commentid>
    <comment_count>35</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-30 15:11:14 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 176977 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176977&amp;action=review
&gt; 
&gt; Overall, it looks good, I think it is Ok to proceed with the test.
&gt; 
&gt; &gt; Source/WebCore/inspector/Inspector.json:3264
&gt; &gt; +                &quot;hidden&quot;: true
&gt; 
&gt; nit: here and below, no need to hide methods of the hidden domain.

You&apos;re right, I should have cleaned that up when I made the entire domain hidden. Will make that change.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:218
&gt; &gt; +    const RenderLayer* renderLayer = m_idToLayer.get(layerId);
&gt; 
&gt; this can be 0 and you should return an error for this.

Right, I&apos;ll make the following change:

    // Send an error if there is no such registered layer id.
    if (!renderLayer) {
        *errorString = &quot;Could not find a bound layer for the provided id&quot;;
        return;
    }

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:514
&gt; &gt; +    InspectorInstrumentation::layerTreeDidChange(this-&gt;page());
&gt; 
&gt; just page() ?
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:520
&gt; &gt; +    InspectorInstrumentation::renderLayerDestroyed(this-&gt;page(), renderLayer);
&gt; 
&gt; ditto

I was keeping in style with several this-&gt;page() in this file. I&apos;m not sure what&apos;s best here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780465</commentid>
    <comment_count>36</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-11-30 15:12:37 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 176977 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176977&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:514
&gt; &gt;&gt; +    InspectorInstrumentation::layerTreeDidChange(this-&gt;page());
&gt; &gt; 
&gt; &gt; just page() ?
&gt; 
&gt; So the layer tree managed by InspectorLayerTreeAgent has regular render layers, yet you only update it when in the accelerated compositing mode -- this looks a bit confusing. Isn&apos;t there use in the layer tree if the accelerated compositing is not used? Should we make it explicit that the tree is only available in accelerated compositing mode?

The entire agent is guarded with #if USE(ACCELERATED_COMPOSITING).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780481</commentid>
    <comment_count>37</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-30 15:38:43 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #34)
&gt; &gt; (From update of attachment 176977 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176977&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:514
&gt; &gt; &gt;&gt; +    InspectorInstrumentation::layerTreeDidChange(this-&gt;page());
&gt; &gt; &gt; 
&gt; &gt; &gt; just page() ?
&gt; &gt; 
&gt; &gt; So the layer tree managed by InspectorLayerTreeAgent has regular render layers, yet you only update it when in the accelerated compositing mode -- this looks a bit confusing. Isn&apos;t there use in the layer tree if the accelerated compositing is not used? Should we make it explicit that the tree is only available in accelerated compositing mode?
&gt; 
&gt; The entire agent is guarded with #if USE(ACCELERATED_COMPOSITING).

That was another thing that I was curious about -- does it have to be? My original question, though, was rather about the effect of run-time compositing mode, not the compile-time ability to do accelerated compositing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780710</commentid>
    <comment_count>38</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-01 03:10:53 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #36)
&gt; &gt; (In reply to comment #34)
&gt; &gt; &gt; (From update of attachment 176977 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176977&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:514
&gt; &gt; &gt; &gt;&gt; +    InspectorInstrumentation::layerTreeDidChange(this-&gt;page());
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; just page() ?
&gt; &gt; &gt; 
&gt; &gt; &gt; So the layer tree managed by InspectorLayerTreeAgent has regular render layers, yet you only update it when in the accelerated compositing mode -- this looks a bit confusing. Isn&apos;t there use in the layer tree if the accelerated compositing is not used? Should we make it explicit that the tree is only available in accelerated compositing mode?
&gt; &gt; 
&gt; &gt; The entire agent is guarded with #if USE(ACCELERATED_COMPOSITING).
&gt; 
&gt; That was another thing that I was curious about -- does it have to be? My original question, though, was rather about the effect of run-time compositing mode, not the compile-time ability to do accelerated compositing.

If we go back to the bug&apos;s description, the real intent of this agent is provide information about layers composited in hardware. What we&apos;re trying to address in the Safari Web Inspector are issues related to the increased memory footprint caused by layers and the ability to easily see what gets composited in a hardware-backed RenderLayer. As such, we only want to show this feature when ACCELERATED_COMPOSITING is on. We can revisit this later as needed, but I think in the context of this bug we should keep the flags as they are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780737</commentid>
    <comment_count>39</comment_count>
      <attachid>177107</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-01 08:29:00 -0800</bug_when>
    <thetext>Created attachment 177107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780738</commentid>
    <comment_count>40</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-01 08:31:50 -0800</bug_when>
    <thetext>(In reply to comment #39)
&gt; Created an attachment (id=177107) [details]
&gt; Patch

This patch makes the small changes Pavel suggested in comment #33, which is to remove the unnecessary &quot;hidden&quot; properties in Inspector.json since the entire LayerTree domain is now hidden, as well as simply use `page()` in lieu of `this-&gt;page()` and finally to report an error in the case the RenderLayer isn&apos;t found in InspectorLayerTreeAgent::nodeIdForLayerId.

Finally, a test was added which exercises the agent&apos;s methods and event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780955</commentid>
    <comment_count>41</comment_count>
      <attachid>177107</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-02 07:41:42 -0800</bug_when>
    <thetext>Comment on attachment 177107
Patch

Attachment 177107 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15103172

New failing tests:
inspector-protocol/layer-tree.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780992</commentid>
    <comment_count>42</comment_count>
      <attachid>177147</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-02 12:32:27 -0800</bug_when>
    <thetext>Created attachment 177147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781581</commentid>
    <comment_count>43</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-03 10:13:26 -0800</bug_when>
    <thetext>
&gt; If we go back to the bug&apos;s description, the real intent of this agent is provide information about layers composited in hardware. What we&apos;re trying to address in the Safari Web Inspector are issues related to the increased memory footprint caused by layers and the ability to easily see what gets composited in a hardware-backed RenderLayer. As such, we only want to show this feature when ACCELERATED_COMPOSITING is on. We can revisit this later as needed, but I think in the context of this bug we should keep the flags as they are.

I realize this works as intended in your particular usage scenario. This may, however, appear confusing for the rest of the protocol clients. I think a more consistent approach would be either to expose render layers unconditionally on whether compositing is used, or just expose composited layers only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781653</commentid>
    <comment_count>44</comment_count>
      <attachid>177147</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-03 10:58:48 -0800</bug_when>
    <thetext>Comment on attachment 177147
Patch

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

&gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:322
&gt; +          &quot;memory&quot;: 4582080,

Do you expect memory to remain stable?

&gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:332
&gt; +          &quot;layerId&quot;: &quot;0.11&quot;,

I wouldn&apos;t expect ids to remain stable.

&gt; LayoutTests/inspector-protocol/layer-tree.html:8
&gt; +    var element = document.createElement(&apos;div&apos;);

please use double quotes where possible.

&gt; LayoutTests/inspector-protocol/layer-tree.html:16
&gt; +    // Variables used throughout the test.

Here and below, please remove redundant/self-evident comments -- there&apos;s a convention in WebKit to avoid such.

&gt; LayoutTests/inspector-protocol/layer-tree.html:94
&gt; +        //

please remove

&gt; LayoutTests/inspector-protocol/layer-tree.html:120
&gt; +        if (!attributes.hasOwnProperty(&quot;id&quot;) || attributes.id != &quot;last-element&quot;)

style: we use !==
hasOwnProperty looks redundant

&gt; LayoutTests/inspector-protocol/layer-tree.html:144
&gt; +        //

please remove

&gt; LayoutTests/inspector-protocol/layer-tree.html:147
&gt; +                return (oldKeys.indexOf(key) == -1);

style: we normally use ===

&gt; LayoutTests/inspector-protocol/layer-tree.html:150
&gt; +                return (newKeys.indexOf(key) == -1);

ditto

&gt; LayoutTests/inspector-protocol/layer-tree.html:163
&gt; +        })(layerTree);

please extract call into a separate statement

&gt; LayoutTests/inspector-protocol/layer-tree.html:180
&gt; +    function dumpObject(obj)
&gt; +    {
&gt; +        InspectorTest.log(&quot;\n&quot; + JSON.stringify(obj, null, &apos;  &apos;));
&gt; +    };

I think you can move this over to InspectorTest. Perhaps, we would eventually need to unify/merge it with the front-end test suite.

&gt; LayoutTests/inspector-protocol/layer-tree.html:186
&gt; +            if (checkFailure(test.name, messageObject))

I think it would be better readable if the logic of checkFailure() were inlined here.

&gt; LayoutTests/inspector-protocol/layer-tree.html:222
&gt; +  div {
&gt; +    position: absolute;
&gt; +    top: 0;
&gt; +    left: 0;
&gt; +  }

Here and below -- please fix indents to be a multiple of 4.

&gt; LayoutTests/platform/chromium/TestExpectations:4107
&gt; +# Layer tree inspection test only passes on Mac
&gt; +webkit.org/b/103513 inspector-protocol/layer-tree.html [ Skip ]

Please file a bug for other platforms to support this and refer to this bug instead. BTW, could you please elaborate on why this is Mac-only?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781834</commentid>
    <comment_count>45</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-03 13:40:41 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; &gt; If we go back to the bug&apos;s description, the real intent of this agent is provide information about layers composited in hardware. What we&apos;re trying to address in the Safari Web Inspector are issues related to the increased memory footprint caused by layers and the ability to easily see what gets composited in a hardware-backed RenderLayer. As such, we only want to show this feature when ACCELERATED_COMPOSITING is on. We can revisit this later as needed, but I think in the context of this bug we should keep the flags as they are.
&gt; 
&gt; I realize this works as intended in your particular usage scenario. This may, however, appear confusing for the rest of the protocol clients. I think a more consistent approach would be either to expose render layers unconditionally on whether compositing is used, or just expose composited layers only.

Further work may indeed be done to enable all clients to expose the RenderLayer tree even when ACCELERATED_COMPOSITING. I do think this patch however has evolved in a way that it&apos;s useful as-is, technically sound and with a protocol that allows extension. I don&apos;t plan on making substantial changes to WebCore as part of this bug.

I will however update the test per your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782497</commentid>
    <comment_count>46</comment_count>
      <attachid>177472</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-04 06:02:55 -0800</bug_when>
    <thetext>Created attachment 177472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782599</commentid>
    <comment_count>47</comment_count>
      <attachid>177472</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-04 09:18:43 -0800</bug_when>
    <thetext>Comment on attachment 177472
Patch

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

&gt; LayoutTests/inspector-protocol/layer-tree.html:146
&gt; +        function recurse (layer) {

recurse(layer)

&gt; LayoutTests/inspector-protocol/layer-tree.html:168
&gt; +        function replacer (key, value)

style: no space after function name

&gt; LayoutTests/inspector-protocol/layer-tree.html:170
&gt; +            return (key === &quot;layerId&quot;) ? undefined : value;

style: please drop redundant parenthesis
we typically dump typeof value instead of value if value is non-stable -- this occasionally helps to catch regressions for values that are missing or of a wrong type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782657</commentid>
    <comment_count>48</comment_count>
      <attachid>177472</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-12-04 10:13:00 -0800</bug_when>
    <thetext>Comment on attachment 177472
Patch

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

Post a version with some of these tweaks, especially the dumping typeof instead of dropping the replaced properties, and I&apos;ll r+ it.

&gt; LayoutTests/inspector-protocol/layer-tree.html:92
&gt; +            parameters: { &quot;layerId&quot;: lastId },

No spaces inside {}.

&gt; LayoutTests/inspector-protocol/layer-tree.html:103
&gt; +            parameters: { &quot;nodeId&quot;: id },

No spaces inside {}.

&gt;&gt; LayoutTests/inspector-protocol/layer-tree.html:146
&gt;&gt; +        function recurse (layer) {
&gt; 
&gt; recurse(layer)

The { should also be on a new line.

&gt;&gt; LayoutTests/inspector-protocol/layer-tree.html:170
&gt;&gt; +            return (key === &quot;layerId&quot;) ? undefined : value;
&gt; 
&gt; style: please drop redundant parenthesis
&gt; we typically dump typeof value instead of value if value is non-stable -- this occasionally helps to catch regressions for values that are missing or of a wrong type.

Should memory be replaced too? I don&apos;t think it will stay constant and might lead to flakiness. Unless it is always constant based on the width and height.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782790</commentid>
    <comment_count>49</comment_count>
      <attachid>177472</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-12-04 12:18:36 -0800</bug_when>
    <thetext>Comment on attachment 177472
Patch

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

&gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:333
&gt; +=== Obtain the node id for the layer with id 0.11 ===

remove the id?

&gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:337
&gt; +=== Get attributes for node with id 9 ===

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782944</commentid>
    <comment_count>50</comment_count>
      <attachid>177565</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-04 14:30:15 -0800</bug_when>
    <thetext>Created attachment 177565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782947</commentid>
    <comment_count>51</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-04 14:32:39 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; (From update of attachment 177472 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177472&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector-protocol/layer-tree.html:146
&gt; &gt; +        function recurse (layer) {
&gt; 
&gt; recurse(layer)

Fixed in 7th patch.

&gt; &gt; LayoutTests/inspector-protocol/layer-tree.html:168
&gt; &gt; +        function replacer (key, value)
&gt; 
&gt; style: no space after function name

Fixed in 7th patch.

&gt; &gt; LayoutTests/inspector-protocol/layer-tree.html:170
&gt; &gt; +            return (key === &quot;layerId&quot;) ? undefined : value;
&gt; 
&gt; style: please drop redundant parenthesis
&gt; we typically dump typeof value instead of value if value is non-stable -- this occasionally helps to catch regressions for values that are missing or of a wrong type.

Good point. I fixed that in the 7th patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782948</commentid>
    <comment_count>52</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-04 14:33:55 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 177472 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177472&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector-protocol/layer-tree.html:92
&gt; &gt; +            parameters: { &quot;layerId&quot;: lastId },
&gt; 
&gt; No spaces inside {}.

Fixed in 7th patch.

&gt; &gt; LayoutTests/inspector-protocol/layer-tree.html:103
&gt; &gt; +            parameters: { &quot;nodeId&quot;: id },
&gt; 
&gt; No spaces inside {}.

Fixed in 7th patch.

&gt; &gt;&gt; LayoutTests/inspector-protocol/layer-tree.html:146
&gt; &gt;&gt; +        function recurse (layer) {
&gt; &gt; 
&gt; &gt; recurse(layer)
&gt; 
&gt; The { should also be on a new line.

Fixed in 7th patch.

&gt; &gt;&gt; LayoutTests/inspector-protocol/layer-tree.html:170
&gt; &gt;&gt; +            return (key === &quot;layerId&quot;) ? undefined : value;
&gt; &gt; 
&gt; &gt; style: please drop redundant parenthesis
&gt; &gt; we typically dump typeof value instead of value if value is non-stable -- this occasionally helps to catch regressions for values that are missing or of a wrong type.
&gt; 
&gt; Should memory be replaced too? I don&apos;t think it will stay constant and might lead to flakiness. Unless it is always constant based on the width and height.

Memory should be based purely on width and height and not flaky. I&apos;ve preserved it in the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782950</commentid>
    <comment_count>53</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-04 14:35:12 -0800</bug_when>
    <thetext>(In reply to comment #49)
&gt; (From update of attachment 177472 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177472&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:333
&gt; &gt; +=== Obtain the node id for the layer with id 0.11 ===
&gt; 
&gt; remove the id?
&gt; 
&gt; &gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:337
&gt; &gt; +=== Get attributes for node with id 9 ===
&gt; 
&gt; ditto

Fixed in 7th patch, thanks for catching this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782952</commentid>
    <comment_count>54</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-04 14:35:54 -0800</bug_when>
    <thetext>Memory for tiled layers can change dynamically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783057</commentid>
    <comment_count>55</comment_count>
      <attachid>177565</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-04 15:54:51 -0800</bug_when>
    <thetext>Comment on attachment 177565
Patch

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

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:67
&gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(0);

There is no need to do this here.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:83
&gt; +    enable(0);

This is wrong: enable will check for the state and will return early.

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:96
&gt; +    m_enabled = true;

I thought we agreed that you did not need to mirror layerTreeAgentEnabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783572</commentid>
    <comment_count>56</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-05 02:45:11 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; Memory for tiled layers can change dynamically.

I&apos;ll update the test to not report memory usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783574</commentid>
    <comment_count>57</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-05 02:46:21 -0800</bug_when>
    <thetext>(In reply to comment #55)
&gt; (From update of attachment 177565 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177565&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:67
&gt; &gt; +    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(0);
&gt; 
&gt; There is no need to do this here.

Will fix in updated patch.

&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:83
&gt; &gt; +    enable(0);
&gt; 
&gt; This is wrong: enable will check for the state and will return early.

I don&apos;t think this method is actually needed, will remove in new patch.
 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:96
&gt; &gt; +    m_enabled = true;
&gt; 
&gt; I thought we agreed that you did not need to mirror layerTreeAgentEnabled

We did, sloppy code removal on my part. I&apos;ll make sure m_enabled is fully gone in the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783577</commentid>
    <comment_count>58</comment_count>
      <attachid>177708</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-05 02:52:41 -0800</bug_when>
    <thetext>Created attachment 177708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783643</commentid>
    <comment_count>59</comment_count>
      <attachid>177708</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 04:27:48 -0800</bug_when>
    <thetext>Comment on attachment 177708
Patch

Attachment 177708 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15160187

New failing tests:
inspector-protocol/layer-tree.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783816</commentid>
    <comment_count>60</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-05 09:12:24 -0800</bug_when>
    <thetext>&gt; I don&apos;t think this method is actually needed, will remove in new patch.

It actually is needed for the case when the process gets swapped. What I meant was that if the state has LayerTreeAgentState::layerTreeAgentEnabled set to true, you should in fact perform the enable routines. I&apos;d suggest either a) calling enable from restore and removing the early return from enable or b) copying enable content into restore in case the bit is set. Sorry for not making it clear.

Rest of the patch looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783884</commentid>
    <comment_count>61</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-05 10:36:22 -0800</bug_when>
    <thetext>(In reply to comment #60)
&gt; &gt; I don&apos;t think this method is actually needed, will remove in new patch.
&gt; 
&gt; It actually is needed for the case when the process gets swapped. What I meant was that if the state has LayerTreeAgentState::layerTreeAgentEnabled set to true, you should in fact perform the enable routines. I&apos;d suggest either a) calling enable from restore and removing the early return from enable or b) copying enable content into restore in case the bit is set. Sorry for not making it clear.
&gt; 
&gt; Rest of the patch looks good.

Thanks for the explanation, I will make the required changes later today and send a new patch out.

I&apos;m a little worried about the test failure reported by the cr-linux bot when the same bot reported no such issue with the previous patch which had a fairly similar test, and cr-android being OK in both cases. Any idea what might be going wrong there? I couldn&apos;t see the text diff being reported by the bot, or I don&apos;t know where to look to find it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784083</commentid>
    <comment_count>62</comment_count>
      <attachid>177824</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-05 13:52:57 -0800</bug_when>
    <thetext>Created attachment 177824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784374</commentid>
    <comment_count>63</comment_count>
      <attachid>177824</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 17:55:16 -0800</bug_when>
    <thetext>Comment on attachment 177824
Patch

Attachment 177824 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15170284

New failing tests:
inspector-protocol/layer-tree.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784461</commentid>
    <comment_count>64</comment_count>
      <attachid>177824</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 18:41:58 -0800</bug_when>
    <thetext>Comment on attachment 177824
Patch

Attachment 177824 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15173137

New failing tests:
inspector-protocol/layer-tree.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785811</commentid>
    <comment_count>65</comment_count>
      <attachid>178199</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-07 05:03:24 -0800</bug_when>
    <thetext>Created attachment 178199
[DIFF] chromium actual diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785813</commentid>
    <comment_count>66</comment_count>
      <attachid>177824</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-07 05:05:55 -0800</bug_when>
    <thetext>Comment on attachment 177824
Patch

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

&gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:153
&gt; +                        &quot;width&quot;: 237,

Chromium fails with these numbers. What defines these values btw? Can we use something more predictable?

&gt; LayoutTests/platform/efl/TestExpectations:1684
&gt; +Bug(EFL) webkit.org/b/103513 inspector-protocol/layer-tree.html [ Skip ]

EFL sheriff should do this and file a bug for himself. Same goes for other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785859</commentid>
    <comment_count>67</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-07 06:59:54 -0800</bug_when>
    <thetext>(In reply to comment #66)
&gt; (From update of attachment 177824 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177824&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector-protocol/layer-tree-expected.txt:153
&gt; &gt; +                        &quot;width&quot;: 237,
&gt; 
&gt; Chromium fails with these numbers. What defines these values btw? Can we use something more predictable?

Yes, we can do that. I&apos;ll send an updated patch with more predictable output. 

&gt; 
&gt; &gt; LayoutTests/platform/efl/TestExpectations:1684
&gt; &gt; +Bug(EFL) webkit.org/b/103513 inspector-protocol/layer-tree.html [ Skip ]
&gt; 
&gt; EFL sheriff should do this and file a bug for himself. Same goes for other ports.

I&apos;m not familiar with the sheriff. Should I just not skip anything then and some bot will catch it and not prevent a commit via the commit-queue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785863</commentid>
    <comment_count>68</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-07 07:13:16 -0800</bug_when>
    <thetext>&gt; Yes, we can do that. I&apos;ll send an updated patch with more predictable output. 
&gt; 
&gt; &gt; &gt; +Bug(EFL) webkit.org/b/103513 inspector-protocol/layer-tree.html [ Skip ]
&gt; 
&gt; I&apos;m not familiar with the sheriff. Should I just not skip anything then and some bot will catch it and not prevent a commit via the commit-queue?

You should either land by hand and let sheriffs handle the port-specific expectations or file a new bug claiming test does not work on EFL. You should add it into the &quot;# EFL has accelerated compositing disabled&quot; group in the TestExpectations with that fresh bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785880</commentid>
    <comment_count>69</comment_count>
      <attachid>178217</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-07 07:43:15 -0800</bug_when>
    <thetext>Created attachment 178217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785883</commentid>
    <comment_count>70</comment_count>
      <attachid>178217</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-07 07:45:59 -0800</bug_when>
    <thetext>Comment on attachment 178217
Patch

Looks great, thanks for following up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785885</commentid>
    <comment_count>71</comment_count>
      <attachid>178219</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-07 07:51:14 -0800</bug_when>
    <thetext>Created attachment 178219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785890</commentid>
    <comment_count>72</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-07 08:03:29 -0800</bug_when>
    <thetext>(In reply to comment #70)
&gt; (From update of attachment 178217 [details])
&gt; Looks great, thanks for following up!

It was almost right, I hadn&apos;t moved the bug in the right place in the EFL TestExpectations, there&apos;s a newer patch doing this. I haven&apos;t actually ran the test, made a blind change. Hopefully it&apos;s right!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785944</commentid>
    <comment_count>73</comment_count>
      <attachid>178219</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 09:55:52 -0800</bug_when>
    <thetext>Comment on attachment 178219
Patch

Clearing flags on attachment: 178219

Committed r136959: &lt;http://trac.webkit.org/changeset/136959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785945</commentid>
    <comment_count>74</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 09:56:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786095</commentid>
    <comment_count>75</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-07 13:24:52 -0800</bug_when>
    <thetext>It broke the !inspector platforms, see the Qt minimal bot for the details</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786238</commentid>
    <comment_count>76</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-12-07 15:38:31 -0800</bug_when>
    <thetext>This patch broke the WinCairo build as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786243</commentid>
    <comment_count>77</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-12-07 15:43:40 -0800</bug_when>
    <thetext>I landed a patch under 136995 that should correct the build for people where USE(ACCELERATED_COMPOSITING) is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789877</commentid>
    <comment_count>78</comment_count>
      <attachid>178219</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-12 13:49:34 -0800</bug_when>
    <thetext>Comment on attachment 178219
Patch

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

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:81
&gt; +    enable(0);

This should have been 
if (m_state-&gt;getBoolean(LayerTreeAgentState::layerTreeAgentEnabled))
    enable(0);

Could you please follow up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790351</commentid>
    <comment_count>79</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-13 00:12:42 -0800</bug_when>
    <thetext>(In reply to comment #78)
&gt; (From update of attachment 178219 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178219&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:81
&gt; &gt; +    enable(0);
&gt; 
&gt; This should have been 
&gt; if (m_state-&gt;getBoolean(LayerTreeAgentState::layerTreeAgentEnabled))
&gt;     enable(0);
&gt; 
&gt; Could you please follow up?

Sure. One question though, since enable is only the following code right now:

void InspectorLayerTreeAgent::enable(ErrorString*)
{
    m_state-&gt;setBoolean(LayerTreeAgentState::layerTreeAgentEnabled, true);
    m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(this);
}

Should we maybe just call this in restore()?

m_instrumentingAgents-&gt;setInspectorLayerTreeAgent(this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790353</commentid>
    <comment_count>80</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-13 00:15:54 -0800</bug_when>
    <thetext>That would work. But I prefer registering agent in one place in the code + your enable routine might grow. A better pattern is typically to have innerEnable that is called from both. And enable could fast return in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790354</commentid>
    <comment_count>81</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-13 00:17:17 -0800</bug_when>
    <thetext>(In reply to comment #80)
&gt; That would work. But I prefer registering agent in one place in the code + your enable routine might grow. A better pattern is typically to have innerEnable that is called from both. And enable could fast return in that case.

OK, I&apos;ll make the suggest changed now and submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790362</commentid>
    <comment_count>82</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2012-12-13 00:27:27 -0800</bug_when>
    <thetext>(In reply to comment #81)
&gt; (In reply to comment #80)
&gt; &gt; That would work. But I prefer registering agent in one place in the code + your enable routine might grow. A better pattern is typically to have innerEnable that is called from both. And enable could fast return in that case.
&gt; 
&gt; OK, I&apos;ll make the suggest changed now and submit a new patch.

https://bugs.webkit.org/show_bug.cgi?id=104887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791795</commentid>
    <comment_count>83</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2012-12-14 13:10:23 -0800</bug_when>
    <thetext>inspector-protocol/layer-tree.html fails on Windows.

In theory ACCELERATED_COMPOSITING is enabled on Windows. The test seems to think otherwise.
Any idea what&apos;s gong on?

Results are here:
http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r136961%20(30671)/inspector-protocol/layer-tree-pretty-diff.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176477</attachid>
            <date>2012-11-28 06:36:45 -0800</date>
            <delta_ts>2012-11-29 14:36:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121128153359.patch</filename>
            <type>text/plain</type>
            <size>37924</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk2MmE1YmQ4ZTE4Mzhk
OWM1OWYxMmYzM2I1YTQwOTQ4YjI1YjgyOS4uNzA3YWZlNjg1ZjNjOGJlNDA3OTE1MzI5MDI0ZDVm
YzI3YWRlNzI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTExLTI4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworICAg
ICAgICAKKyAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXRjaCBpcyB0byBwcm92aWRlIGEg
bmV3IGFnZW50IGVuYWJsaW5nIHRoZSBXZWIgSW5zcGVjdG9yIHRvIGludGVyZmFjZSB3aXRoIFdl
YkNvcmUgdG8gYWNjZXNzCisgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZW5kZXIgbGF5
ZXIgdHJlZSBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5LCBleHBvc2UgdXNlZnVsIGluZm9ybWF0aW9u
IGFib3V0IGxheWVycyBiYWNrZWQgYnkKKyAgICAgICAgdGV4dHVyZXMgY29tcG9zaXRlZCBvbiB0
aGUgR1BVIHN1Y2ggYXMgbWV0cmljcyBhbmQgYmFja2luZyBzdG9yZS4gVGh1cyB3ZSBub3cgcHJv
dmlkZSBhIExheWVyVHJlZUFnZW50IHdoaWNoIHdpbGwKKyAgICAgICAgaW5mb3JtIHRoZSBmcm9u
dC1lbmQgb2YgY2hhbmdlcyB0byB0aGUgcmVuZGVyIGxheWVyIHRyZWUgdmlhIG5ldyBsYXllclRy
ZWVXaWxsQ2hhbmdlIGFuZCBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnRzLgorICAgICAgICBUaGUg
bGF0dGVyIHByb3ZpZGVzIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBlbnRpcmUgaGllcmFyY2h5
IG9mIFJlbmRlckxheWVycyBmb3IgdGhlIGluc3BlY3RlZCBkb2N1bWVudCwgYW5kIHRoaXMKKyAg
ICAgICAgaGllcmFyY2h5IGNhbiBiZSBxdWVyaWVkIGF0IGFueSB0aW1lIHVzaW5nIHRoZSAuZ2V0
TGF5ZXJUcmVlKCkgbWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudC4KKyAgICAgICAgCisgICAg
ICAgIEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFz
IGJlZW4gY2hhbmdlZCBzdWNoIHRoYXQgaW4gaXRzIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzCisg
ICAgICAgIG1ldGhvZCB3ZSBjYWxsIHRoZSBsYXllclRyZWVXaWxsQ2hhbmdlIGFuZCBsYXllclRy
ZWVEaWRDaGFuZ2UgbWV0aG9kcyBvbiB0aGUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgaW5zdGFu
Y2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlv
bmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDogQWRkaW5nIG5ldyBmaWxlcy4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBB
ZGRpbmcgbmV3IGZpbGVzLgorICAgICAgICAqIFRhcmdldC5wcmk6IEFkZGluZyBuZXcgZmlsZXMu
CisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRpbmcgbmV3IGZpbGVzLgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBBZGRpbmcgbmV3IGZpbGVzLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkaW5nIG5ldyBmaWxlcy4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IERlZmluZSBuZXcgdHlwZXMgSW50UmVj
dCAoeCwgeSwgd2lkdGgsIGhlaWdodCkgYW5kIExheWVyLCB3aGljaCBob2xkcyB0aGUgaW5mb3Jt
YXRpb24gZm9yIGEKKyAgICAgICAgUmVuZGVyTGF5ZXIgKGlkLCBpc1Jvb3QsIHBhcmVudElkLCBu
b2RlSWQsIGJvdW5kcywgaXNDb21wb3NpdGVkLCBtZW1vcnksIGNvbXBvc2l0ZWRCb3VuZHMpIGFu
ZCBpdHMgY2hpbGRyZW4gKGNoaWxkTGF5ZXJzKS4KKyAgICAgICAgV2UgYWxzbyBkZWZpbmUgdGhl
IG1ldGhvZHMgb2YgdGhlIExheWVyVHJlZUFnZW50IG9iamVjdCAoZW5hYmxlLCBkaXNhYmxlLCBn
ZXRMYXllclRyZWUpIGFuZCB0aGUgdHdvIGV2ZW50cyBpdCBmaXJlcworICAgICAgICAobGF5ZXJU
cmVlV2lsbENoYW5nZSBhbmQgbGF5ZXJUcmVlRGlkQ2hhbmdlKS4KKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOiBJbmNsdWRlIEluc3BlY3RvckxheWVyVHJlZUFnZW50
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDogSW5zdGFudGlh
dGUgdGhlIEluc3BlY3RvckxheWVyVHJlZUFnZW50LgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjppZEZvck5vZGUpOiBOZXcgbWV0aG9kIHdoaWNoIHdlIHVzZSB0byBnZXQgdGhlIGlkIGZv
ciB0aGUgTm9kZSB0byB3aGljaCBhIAorICAgICAgICBwYXJ0aWN1bGFyIFJlbmRlckxheWVyIGJl
bG9uZ3Mgd2hlbiB3ZSBjcmVhdGUgdGhlIG9iamVjdCBwYXNzZWQgdG8gdGhlIGZyb250LWVuZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oOiBEZWNsYXJlIHRoZSBuZXcgaWRGb3JOb2RlIG1ldGhvZC4KKyAgICAgICAgKEluc3BlY3Rv
ckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbCk6IENhbGwgcmVzZXQoKSBvbiB0aGUgTGF5
ZXJUcmVlQWdlbnQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZUFnZW50
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpsYXllclRyZWVXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdldExheWVyVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JSb290TGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
TGF5ZXIpOiBCdWlsZCB0aGUgZW50aXJlIGhpZXJhcmNoeSBvZiBSZW5kZXJMYXllcnMgZnJvbSB0
aGUgcHJvdmlkZWQgCisgICAgICAgIFJlbmRlckxheWVyLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YmluZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6dW5iaW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmVuYWJsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50
aW5nQWdlbnRzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Ry
dW1lbnRpbmdBZ2VudHM6Okluc3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zdHJ1bWVudGluZ0FnZW50czo6aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQp
OgorICAgICAgICAoSW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKTogQ2FsbCB0aGUgbGF5ZXJUcmVlV2ls
bENoYW5nZSBhbmQgbGF5ZXJUcmVlRGlkQ2hhbmdlIG1ldGhvZHMKKyAgICAgICAgb24gdGhlIExh
eWVyVHJlZUFnZW50IHRvIGluZm9ybSB0aGUgZnJvbnQtZW5kIHRoYXQgdGhlIFJlbmRlckxheWVy
IGhpZXJhcmNoeSBoYXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6bGF5ZXJUcmVlSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFJlbmRlckxh
eWVyQ29tcG9zaXRvcik6CisKIDIwMTItMTEtMjggIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleG1hcF0gUkVHUkVTU0lPTihyMTM1NjIwKSBR
dFRlc3RCcm93c2VyIGNyYXNoZXMgb24gR29vZ2xlLWdyYXZpdHkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDNhNWQyMTczNTg0NWYwYmQ4YTU0NzNiYTZmYjBkMDlkMGZmNTEyYjIuLjJmYjhlODFj
YWYzZjhkNDdlYWZkNTc2MmFlMTE0M2FiZjczMTI4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xNTc5LDYgKzE1NzksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcAorICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDb3VudGVycy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IGRjY2JmN2JlZDJiY2VkMTkyMDIwNzhlYTQ2MTIxNDc5ODI0ZWQ3YWIuLmNiNTJlYjM2NjRm
ZTBkNzdkMjUzYmFmYjIyMjNkM2ZhODMwOWNkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzY5NSw2ICszNjk1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzSW5zdHJ1bWVudGF0aW9uLmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGM1N2Q1OGIyMGNjNWY1ZTcyZWM4
OTUxYWI2MTYyYjMxNzBhZmZhNWUuLmJhZjM2ZTc4MDFiZmIwZDM2M2I4NWFkZjYyNmM1NTEyNDVk
ZGJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzU2LDYgKzc1Niw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwIFwK
KyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuY3BwIFwKQEAg
LTE4OTcsNiArMTg5OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JC
YXNlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmggXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNJbnN0cnVtZW50YXRpb24uaCBcCisgICAgaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50
YXRpb24uaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggMDZmOTEyMDIxZDRmYzNiZWNiODQ1YTNhMjI2MmZmMjUzZTEwYTNkMi4uYmEy
NDkwNjI0YzE2ZmQ2ZGYzYTQwODIxMWJlNDgwNWYwMTY4NTAwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMjg0OCw2ICsyODQ4LDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0luc3Ry
dW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNw
cCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCcs
CisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMWQzYTIyMzMwZmI4MWE3
YzBhYmMyYWE2MzEwMWEwMWZmOWFhYjI0Li43ZjllNjU4ODQwMGVkODk4NTEyZjEzYzhkYzlhZjUy
MWZjYWQ2YjJkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNzUzMzgsNiArNzUzMzgsMzAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckxheWVyVHJlZUFnZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyZDU3NTZjYzVhNjAw
NWQ0ZGY5Y2VlNzUxZmE5ZDgyZDZhZmZlY2MuLjdjMTM3Njk1ODNlYjI3YTViNDc2ZDRjNzIzNmI3
NzBjMWI5NTA2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE5MTAsNiArMTkxMCw4IEBACiAJCTcxOTA0REVBMTU2QTYzM0Ew
MDFFMUJBNSAvKiBET01TVkdWaWV3U3BlY0ludGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTg1MTIzMzE1Njg2NDk4
MDBDNDA5NjcgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oICovOyB9OwogCQk3MUE1N0RGMTE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyog
U1ZHUGF0aFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTcxQTU3REYyMTU0QkUyNUMwMDA5RDEyMCAv
KiBTVkdQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MUE1N0RGMDE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5o
ICovOyB9OworCQk3MUIxRTEyNTE2NDA0OEY3MDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
QjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oICovOyB9
OworCQk3MUIxRTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCMUUx
MjMxNjQwNDhDQzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCAqLzsgfTsK
IAkJNzFDQzdBMjAxNTJBMEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDQzdBMUYx
NTJBMEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovOyB9OwogCQk3
MURDQjcwMTE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRENCNkZGMTU2ODE5NzYwMDg2
MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3BwICovOyB9OwogCQk3MURDQjcwMjE1NjgxOTc2MDA4
NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MURDQjcwMDE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5k
UGFuLmggKi87IH07CkBAIC05MTg2LDYgKzkxODgsOCBAQAogCQk3MTg1MTIzMzE1Njg2NDk4MDBD
NDA5NjcgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdW
aWV3U3BlY0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQTU3REVG
MTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MUE1N0RGMDE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoVXRpbGl0aWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgw
QSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUNDN0ExRjE1
MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I2RkYxNTY4MTk3NjAwODYyMjcxIC8qIEpT
U1ZHWm9vbUFuZFBhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NWR1pvb21BbmRQYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MURDQjcw
MDE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU1ZHWm9vbUFuZFBhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ4MTAsNiArMTQ4MTQsOCBAQAogCQkJCUFBNzMxODNDMTU5MjU1QjkwMEE5M0U2
RSAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAgKi8sCiAJCQkJQUE3MzE4M0QxNTky
NTVCOTAwQTkzRTZFIC8qIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmggKi8sCiAJCQkJQUE5
MDMwRkUxNTdFMTZBMDAwMjc2MjQ3IC8qIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzICovLAorCQkJCTcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAgKi8sCisJCQkJNzFCMUUxMjQxNjQwNDhDQzAwQjE4ODBBIC8qIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmggKi8sCiAJCQkJN0EwRTc2RjYxMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc2RjcxMEJGMDhFRDAwQTAyNzZFIC8q
IEluamVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCTdBMEU3NkY4MTBCRjA4RUQwMEEwMjc2RSAv
KiBJbmplY3RlZFNjcmlwdEhvc3QuaWRsICovLApAQCAtMjMzMTYsNiArMjMzMjIsNyBAQAogCQkJ
CTg1MDJBQjU0MEFENDM4QzAwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODUwMkFCOTgwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY0dF
bGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjU2MEFENDM4QzAwMDM3
ODU0MCAvKiBET01TVkdGRUZ1bmNSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzFCMUUx
MjUxNjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTAyQUI5OTBBRDQzOTRFMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jUkVsZW1l
bnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFCNTgwQUQ0MzhDMDAwMzc4NTQw
IC8qIERPTVNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUw
MkFCOUEwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MTc0LDYgKzI2MTgxLDcgQEAKIAkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAorCQkJCTcxQjFFMTI2MTY0MDQ5MUEwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNjlEQTE1MDVGMDc2MDAxQjc0
QUMgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUUxQjFEMDBG
RjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYyOUMxNkUxMzAwQzJFMjAwMkQ3OTRFIC8qIEFjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA2
MzVmYTk0MTUwNWIxODNiZWRjY2VjODY3ODU5NDQxMmM2ZWFiMmMzLi5mNWFmNDJmMjlmNTA1Mjc5
NjgxN2E1ZWVhMDEyYTU4N2VjZDA4N2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCkBAIC0zMjQxLDUgKzMyNDEsNjkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
XSwKICAgICAgICAgImV2ZW50cyI6IFtdCisgICAgfSwKKyAgICB7CisgICAgICAgICJkb21haW4i
OiAiTGF5ZXJUcmVlIiwKKyAgICAgICAgInR5cGVzIjogWworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJpZCI6ICJJbnRSZWN0IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmpl
Y3QiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHJlY3RhbmdsZS4iLAorICAg
ICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIngiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSB4IHBvc2l0aW9u
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ5IiwgInR5cGUiOiAiaW50ZWdl
ciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgeSBwb3NpdGlvbi4iIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAid2lkdGgiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjog
IlRoZSB3aWR0aCBtZXRyaWMuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhl
aWdodCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhlaWdodCBtZXRy
aWMuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1
ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAi
TGF5ZXIiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGEgY29tcG9zaXRpbmcgbGF5ZXIu
IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJpZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHVu
aXF1ZSBpZCBmb3IgdGhpcyBsYXllci4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaXNSb290IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMg
d2hldGhlciB0aGlzIGxheWVyIGlzIHRoZSByb290LiIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJwYXJlbnRJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
SWQgb2YgdGhlIHBhcmVudCBsYXllci4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibm9kZUlkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUg
bm9kZSB0byB3aGljaCB0aGlzIGxheWVyIGlzIGF0dGFjaGVkLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJib3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgImRlc2NyaXB0aW9u
IjogIkJvdW5kcyBvZiB0aGUgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImlzQ29tcG9zaXRlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiSW5k
aWNhdGVzIHdoZXRoZXIgdGhpcyBsYXllciBpcyBjb21wb3NpdGVkLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJtZW1vcnkiLCAidHlwZSI6ICJpbnRlZ2VyIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkVzdGltYXRlZCBtZW1vcnkgdXNlZCBieSB0aGlzIGxh
eWVyLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb21wb3NpdGVkQm91bmRz
IiwgIiRyZWYiOiAiSW50UmVjdCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJU
aGUgYm91bmRzIG9mIHRoZSBjb21wb3NpdGVkIGxheWVyLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjaGlsZExheWVycyIsICJ0eXBlIjogImFycmF5IiwgIm9wdGlvbmFsIjog
dHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJMYXllciIgfSwgImRlc2NyaXB0aW9uIjogIkNoaWxk
IGxheWVycy4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgICJjb21tYW5kcyI6IFsK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIGNvbXBvc2l0aW5nIHRyZWUgaW5zcGVj
dGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogImRpc2FibGUiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxl
cyBjb21wb3NpdGluZyB0cmVlIGluc3BlY3Rpb24uIgorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRMYXllclRyZWUiLAorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsYXllciB0cmVlIHN0cnVjdHVyZSBv
ZiB0aGUgY3VycmVudCBwYWdlLiIsCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibGF5ZXJUcmVlIiwgIiRyZWYiOiAiTGF5ZXIiLCAi
ZGVzY3JpcHRpb24iOiAiTGF5ZXIgdHJlZSBzdHJ1Y3R1cmUgb2YgdGhlIGN1cnJlbnQgcGFnZS4i
IH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisg
ICAgICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgICJldmVudHMiOiBbCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAibGF5ZXJUcmVlV2lsbENoYW5nZSIsCisgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiLAorICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImxheWVyVHJlZSIsICIkcmVmIjogIkxheWVyIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgfQorICAgICAgICBdCiAgICAgfV0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCmluZGV4IGQxOWFkMmUwYTAyM2I5OWE4NjQ0NTY3YTMx
NGY3NGExZGZmNzA3MWYuLjAzMDFiMWNjYWRhNTI1M2YwZTlhYmU1ZThiMTg2OTYxZjgwYTkwZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApA
QCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuY3BwIgogI2luY2x1
ZGUgIkluc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIgorI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
T3ZlcmxheS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjYTky
YzRhZTIzNmQwNWFlM2JmODQzZGY4ZGFlNzg4YTM2YTA0NzVlLi5lM2IwMjdhZjYxZDY1OTJkMmY1
ODM3MjE1ZWFjNTU3MWEwY2EzYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckxheWVyVHJlZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5QWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFn
ZUFnZW50LmgiCkBAIC0xNTEsNiArMTUyLDggQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKIAog
ICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIuZ2V0KCkpKTsKIAorICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQo
KSwgcGFnZSkpOworCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0b3JDbGllbnQsIGluc3BlY3RvckNs
aWVudCk7CiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgp
LT5pbml0KG1faW5zcGVjdG9yQWdlbnQKICAgICAgICAgLCBjb25zb2xlQWdlbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDFiMDg5MzQ3
MjFhMmZlZDM5YzMyYmEyNDAwZTMwODA3ODY0ZDEzM2MuLjA5ZTU4NjQ2MWEyNTUyZTlkZjJmNjg0
OTNmN2U3ODJkYzM2NWQxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcApAQCAtMjk3LDYgKzI5NywxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpyZWxlYXNlRGFuZ2xpbmdOb2RlcygpCiAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5j
bGVhcigpOwogfQogCitpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlkRm9yTm9kZShOb2RlKiBub2Rl
KQoreworICAgIFN0cmluZyBlcnJvclN0cmluZzsKKyAgICByZXR1cm4gcHVzaE5vZGVUb0Zyb250
ZW5kKCZlcnJvclN0cmluZywgYm91bmROb2RlSWQobV9kb2N1bWVudC5nZXQoKSksIG5vZGUpOwor
fQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAq
IG5vZGVzTWFwKQogewogICAgIGludCBpZCA9IG5vZGVzTWFwLT5nZXQobm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDNiNzI2NTI4MzFi
MTFjYjFjNDNmZTFiODFkZjI2OTBkY2FiYjM0MmQuLjYyN2UwODZmMGM0YWQwZTBkYzMxOThjZDhh
MDk3MDIxOWFkYzE0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCkBAIC0xOTksNiArMTk5LDcgQEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBj
YWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQorICAgIGludCBpZEZvck5vZGUoTm9kZSopOwog
CiBwcml2YXRlOgogICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdl
ciosIEluc3BlY3Rvck92ZXJsYXkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMmFjZDYyYjU0NDM2ZmVlZjdk
NzgyM2JlMzcxNDUyZmQyODE4NjQxOC4uMDFlZmZjYzZiZGExODI5N2RiMmVjOTA0YjZiNTk5NzFm
MmZhYWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvclByb2ZpbGVyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgiCkBAIC05MTIsNiArOTEzLDggQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENvbW1pdExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnQKICAgICAg
ICAgICAgIGRvbVN0b3JhZ2VBZ2VudC0+Y2xlYXJSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
ckRPTUFnZW50KCkpCiAgICAgICAgICAgICBkb21BZ2VudC0+c2V0RG9jdW1lbnQobWFpbkZyYW1l
LT5kb2N1bWVudCgpKTsKKyAgICAgICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXll
clRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckxheWVyVHJlZUFnZW50
KCkpCisgICAgICAgICAgICBsYXllclRyZWVBZ2VudC0+cmVzZXQoKTsKIAogICAgICAgICBpbnNw
ZWN0b3JBZ2VudC0+ZGlkQ29tbWl0TG9hZCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2
NWJiZTg5YWFmODVmZTMzNDRhNzYyMTVjYjBkMzZkNTY0YTNkNTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBA
IC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmgiCisKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIK
KyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJl
bmRlckxheWVyQmFja2luZy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgor
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgTGF5ZXJUcmVlQWdlbnRTdGF0ZSB7CitzdGF0aWMgY29uc3QgY2hhciBsYXllclRyZWVBZ2Vu
dEVuYWJsZWRbXSA9ICJsYXllclRyZWVBZ2VudEVuYWJsZWQiOworfTsKKworSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkK
KyAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4oIkxheWVy
VHJlZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdl
KHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCit7Cisg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlz
KTsKK30KKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dCgpCit7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVB
Z2VudCgwKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6c2V0RnJvbnRlbmQo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQoreworICAgIEFTU0VSVChmcm9udGVuZCk7Cisg
ICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5sYXllcnRyZWUoKTsKK30KKwordm9pZCBJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit7CisgICAgbV9mcm9udGVuZCA9IDA7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCgw
KTsKKyAgICBkaXNhYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpy
ZXN0b3JlKCkKK3sKKyAgICBtX2VuYWJsZWQgPSBtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJl
ZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OnJlc2V0KCkKK3sKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNs
ZWFyKCk7CisgICAgbV9pZFRvTGF5ZXIuY2xlYXIoKTsKKyAgICBtX2xhc3RMYXllcklkID0gMDsK
K30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikK
K3sKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFibGVkID0g
dHJ1ZTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVy
VHJlZUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYgKCFtX2VuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBtX3N0YXRlLT5zZXRC
b29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgbV9lbmFi
bGVkKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJUcmVlV2lsbENo
YW5nZSgpCit7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZnJvbnRlbmQtPmxheWVyVHJlZVdpbGxDaGFuZ2UoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6bGF5ZXJUcmVlRGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcm9udGVuZC0+bGF5ZXJUcmVlRGlkQ2hhbmdlKGJ1
aWxkT2JqZWN0Rm9yUm9vdExheWVyKCkpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcqIGVycm9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkxheWVyVHJlZTo6TGF5ZXI+JiBvYmplY3QpCit7CisgICAgb2JqZWN0ID0gYnVpbGRPYmplY3RG
b3JSb290TGF5ZXIoKTsKKyAgICBVTlVTRURfUEFSQU0oZXJyb3IpOworfQorCitQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
YnVpbGRPYmplY3RGb3JSb290TGF5ZXIoKQoreworICAgIHJldHVybiBidWlsZE9iamVjdEZvckxh
eWVyKG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpLT5jb21w
b3NpdG9yKCktPnJvb3RSZW5kZXJMYXllcigpLCB0cnVlKTsKK30KKworUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTGF5ZXIoUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyLCBib29sIGRlZXApCit7Cisg
ICAgYm9vbCBpc0NvbXBvc2l0ZWQgPSByZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCk7CisgICAg
Tm9kZSogbm9kZSA9IHJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5ub2RlKCk7CisKKyAgICAvLyBC
YXNpYyBzZXQgb2YgcHJvcGVydGllcy4KKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6TGF5ZXI+IGxheWVyT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI6OmNy
ZWF0ZSgpCisgICAgICAgIC5zZXRJZChiaW5kKHJlbmRlckxheWVyKSkKKyAgICAgICAgLnNldElz
Um9vdChyZW5kZXJMYXllci0+aXNSb290TGF5ZXIoKSkKKyAgICAgICAgLnNldFBhcmVudElkKHJl
bmRlckxheWVyLT5wYXJlbnQoKSA/IGJpbmQocmVuZGVyTGF5ZXItPnBhcmVudCgpKSA6IDApCisg
ICAgICAgIC5zZXROb2RlSWQobm9kZSA/IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
RE9NQWdlbnQoKS0+aWRGb3JOb2RlKG5vZGUpIDogMCkKKyAgICAgICAgLnNldEJvdW5kcyhidWls
ZE9iamVjdEZvckludFJlY3QoZW5jbG9zaW5nSW50UmVjdChyZW5kZXJMYXllci0+bG9jYWxCb3Vu
ZGluZ0JveCgpKSkpCisgICAgICAgIC5zZXRJc0NvbXBvc2l0ZWQoaXNDb21wb3NpdGVkKTsKKyAg
ICAKKyAgICAvLyBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBjb21wb3NpdGVkIGxheWVycyBvbmx5
LgorICAgIGlmIChpc0NvbXBvc2l0ZWQpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBi
YWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNl
dE1lbW9yeShiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpKTsKKyAgICAgICAg
bGF5ZXJPYmplY3QtPnNldENvbXBvc2l0ZWRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGJh
Y2tpbmctPmNvbXBvc2l0ZWRCb3VuZHMoKSkpOworICAgIH0KKworICAgIGlmIChkZWVwKSB7Cisg
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
TGF5ZXI+ID4gY2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOworCisgICAgICAgIHJlbmRlckxheWVyLT51cGRh
dGVMYXllckxpc3RzSWZOZWVkZWQoKTsKKworICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEg
cmVmbGVjdGlvbiBsYXllci4KKyAgICAgICAgaWYgKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5
ZXIoKSkKKyAgICAgICAgICAgIGNoaWxkcmVuQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JM
YXllcihyZW5kZXJMYXllci0+cmVmbGVjdGlvbkxheWVyKCksIHRydWUpKTsKKworICAgICAgICBp
ZiAocmVuZGVyTGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5uZWdaT3Jk
ZXJMaXN0KCkpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWdaT3JkZXJM
aXN0LT5zaXplKCk7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
U2l6ZTsgKytpKQorICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1
aWxkT2JqZWN0Rm9yTGF5ZXIobmVnWk9yZGVyTGlzdC0+YXQoaSksIHRydWUpKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9y
bWFsRmxvd0xpc3QgPSByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAgICAg
ICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBj
aGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobm9ybWFsRmxvd0xpc3Qt
PmF0KGkpLCB0cnVlKSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKHJlbmRlckxheWVy
LT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxh
eWVyKj4qIHBvc1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwor
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKKyAg
ICAgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxh
eWVyKHBvc1pPcmRlckxpc3QtPmF0KGkpLCB0cnVlKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBsYXllck9iamVjdC0+c2V0Q2hpbGRMYXllcnMoY2hpbGRyZW5BcnJheSk7
CisgICAgfQorICAgIAorICAgIHJldHVybiBsYXllck9iamVjdDsKK30KKworUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
YnVpbGRPYmplY3RGb3JJbnRSZWN0KEludFJlY3QgcmVjdCkKK3sKKyAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFgocmVjdC54
KCkpCisgICAgICAgIC5zZXRZKHJlY3QueSgpKQorICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0
aCgpKQorICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpLnJlbGVhc2UoKTsKK30KKwor
aW50IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXll
cikKK3sKKyAgICBpbnQgaWQgPSBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXllcik7Cisg
ICAgaWYgKGlkKQorICAgICAgICByZXR1cm4gaWQ7CisgICAgaWQgPSArK21fbGFzdExheWVySWQ7
CisgICAgbV9kb2N1bWVudExheWVyVG9JZE1hcC5zZXQobGF5ZXIsIGlkKTsKKyAgICBtX2lkVG9M
YXllci5zZXQoaWQsIGxheWVyKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OnVuYmluZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpCit7CisgICAg
aW50IGlkID0gbV9kb2N1bWVudExheWVyVG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlmICghaWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZG9jdW1lbnRMYXllclRvSWRNYXAucmVtb3ZlKGxh
eWVyKTsKKyAgICBtX2lkVG9MYXllci5yZW1vdmUoaWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorI2VuZGlmIC8vIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZiNmVmYTZkOGFjNmMzZGQ4MzI3
ZDQ5ODgyOTY3MDdkODQyMjhlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEluc3BlY3RvckxheWVyVHJlZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnRfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJS
ZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKK2NsYXNzIEluc3RydW1lbnRpbmdBZ2Vu
dHM7CitjbGFzcyBQYWdlOworCit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKKworY2xhc3Mg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpM
YXllclRyZWVDb21tYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2UpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckxheWVyVHJlZUFnZW50KGlu
c3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBwYWdlKSk7CisgICAgfQorICAgIH5JbnNwZWN0b3JM
YXllclRyZWVBZ2VudCgpOworCisgICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kKik7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzdG9yZSgpOworICAgIHZvaWQgcmVzZXQoKTsKKworICAgIHZvaWQgbGF5ZXJU
cmVlV2lsbENoYW5nZSgpOworICAgIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CisKKyAgICBi
b29sIGVuYWJsZWQoKSB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKworICAgIC8vIENhbGxlZCBmcm9t
IHRoZSBmcm9udC1lbmQuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lk
IGdldExheWVyVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj4mKTsKKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKik7CisKKyAgICAvLyBSZW5k
ZXJMYXllci1yZWxhdGVkIG1ldGhvZHMuCisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRl
ckxheWVyKiwgaW50PiBMYXllclRvSWRNYXA7CisgICAgaW50IGJpbmQoY29uc3QgUmVuZGVyTGF5
ZXIqKTsKKyAgICB2b2lkIHVuYmluZChjb25zdCBSZW5kZXJMYXllciopOworCisgICAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JSb290TGF5
ZXIoKTsgICAKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBi
dWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVyKiwgYm9vbCk7CisgICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoSW50
UmVjdCk7CisgICAgICAgIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAgICBJbnNwZWN0
b3JGcm9udGVuZDo6TGF5ZXJUcmVlKiBtX2Zyb250ZW5kOworICAgIGJvb2wgbV9lbmFibGVkOwor
CisgICAgTGF5ZXJUb0lkTWFwIG1fZG9jdW1lbnRMYXllclRvSWRNYXA7CisgICAgSGFzaE1hcDxp
bnQsIGNvbnN0IFJlbmRlckxheWVyKj4gbV9pZFRvTGF5ZXI7CisgICAgaW50IG1fbGFzdExheWVy
SWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4
IDg4NGQ5YmIxMTZmOTQzMTNjMmIyODdiZWI3OGVlOWQ3MmUxN2I0NWYuLjQ5NDkzN2JlYzA4MzZh
YTMzZGQ1MTM2NzkzYWNkNzc1YzcwMDNhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKIGNsYXNzIElu
c3BlY3RvckNTU0FnZW50OwogY2xhc3MgSW5zcGVjdG9yQ2FudmFzQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKIGNsYXNz
IEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKQEAg
LTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAg
ICAgICAgLCBtX2luc3BlY3RvclBhZ2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NT
QWdlbnQoMCkKKyAgICAgICAgLCBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAg
ICwgbV9pbnNwZWN0b3JDb25zb2xlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFn
ZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAg
KzE1NSwxNCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNh
bnZhc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAg
IHZvaWQgc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yQ2FudmFzQWdlbnQgPSBhZ2VudDsgfQogCisgICAgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQqIGluc3BlY3RvckxheWVyVHJlZUFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9p
bnNwZWN0b3JMYXllclRyZWVBZ2VudDsgfQorICAgIHZvaWQgc2V0SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQgPSBhZ2VudDsgfQorCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KiBtX2lu
c3BlY3RvckFnZW50OwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9pbnNwZWN0b3JQYWdlQWdl
bnQ7CiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1faW5zcGVjdG9yQ1NTQWdlbnQ7CisgICAgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQqIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7CiAgICAgSW5z
cGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3RvckNvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0
b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2VudDsKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDg3MGJmMWRkZmE3Mzk1OWMw
ZWUwYTJjYzE4ZTllZmE4ODU5Y2YyMWMuLmNkYmYxMWQ5ZGU0ODI3ZDNkYmQ5M2YxYWNhYjQ5ZWNj
YWFhYjc5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKKyNpbmNsdWRlICJJbnN0
cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCkBAIC00MjYsNiArNDI4LDEwIEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGlu
Z1VwZGF0ZVR5cGUgdXBkYXRlCiAgICAgaWYgKCFjaGVja0ZvckhpZXJhcmNoeVVwZGF0ZSAmJiAh
bmVlZEdlb21ldHJ5VXBkYXRlKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBJbmZvcm0gdGhl
IGluc3BlY3RvciB0aGF0IHdlJ3JlIHN0YXJ0aW5nIGEgY29tcG9zaXRpbmcgdXBkYXRlLgorICAg
IGlmIChsYXllclRyZWVJbnNwZWN0b3IoKSkKKyAgICAgICAgbGF5ZXJUcmVlSW5zcGVjdG9yKCkt
PmxheWVyVHJlZVdpbGxDaGFuZ2UoKTsKKwogICAgIGJvb2wgbmVlZEhpZXJhcmNoeVVwZGF0ZSA9
IG1fY29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWlsZDsKICAgICBib29sIGlzRnVsbFVwZGF0ZSA9
ICF1cGRhdGVSb290OwogICAgIGlmICghdXBkYXRlUm9vdCB8fCBtX2NvbXBvc2l0aW5nQ29uc3Vs
dHNPdmVybGFwKSB7CkBAIC01MDgsNiArNTE0LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRl
CiAKICAgICBpZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAgICAgICAgZW5hYmxl
Q29tcG9zaXRpbmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUgaW5zcGVjdG9yIHRo
YXQgd2UncmUgZG9uZSB3aXRoIHRoZSBjb21wb3NpdGluZyB1cGRhdGUuCisgICAgaWYgKGxheWVy
VHJlZUluc3BlY3RvcigpKQorICAgICAgICBsYXllclRyZWVJbnNwZWN0b3IoKS0+bGF5ZXJUcmVl
RGlkQ2hhbmdlKCk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0yNzUxLDYgKzI3NjEsMTEg
QEAgUGFnZSogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWdlKCkgY29uc3QKICAgICByZXR1cm4g
MDsKIH0KIAorSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
bGF5ZXJUcmVlSW5zcGVjdG9yKCkKK3sKKyAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uRm9yUGFn
ZSh0aGlzLT5wYWdlKCkpLT5pbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
aW5kZXggNGQ4MjhmMWE1ZjFmMTAwYmYyNDBiYzMxNGIwMzczYWRhYmJiNTZmNy4uZDk2ZGMwM2Ey
YjY2ZmNkNjUxZGM5ZTUyMDExM2Q2MGY2MjMwZGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllclVwZGF0ZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
IgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5n
LmgiCiAKQEAgLTM4Niw2ICszODcsOCBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPEdyYXBoaWNz
TGF5ZXJVcGRhdGVyPiBtX2xheWVyVXBkYXRlcjsgLy8gVXBkYXRlcyB0aWxlZCBsYXllciB2aXNp
YmxlIGFyZWEgcGVyaW9kaWNhbGx5IHdoaWxlIGFuaW1hdGlvbnMgYXJlIHJ1bm5pbmcuCiAKKyAg
ICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlSW5zcGVjdG9yKCk7CisKICNpZiAh
TE9HX0RJU0FCTEVECiAgICAgaW50IG1fcm9vdExheWVyVXBkYXRlQ291bnQ7CiAgICAgaW50IG1f
b2JsaWdhdGVDb21wb3NpdGVkTGF5ZXJDb3VudDsgLy8gY291bnQgb2YgbGF5ZXIgdGhhdCBoYXZl
IHRvIGJlIGNvbXBvc2l0ZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176819</attachid>
            <date>2012-11-29 14:37:08 -0800</date>
            <delta_ts>2012-11-30 08:53:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121129233440.patch</filename>
            <type>text/plain</type>
            <size>36979</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk2MmE1YmQ4ZTE4Mzhk
OWM1OWYxMmYzM2I1YTQwOTQ4YjI1YjgyOS4uMTM0MDhiZGVkM2RjZTYzODdiMTZlOWI4ZWMxMGY1
YWFmZGNiOTkwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTExLTI5ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2Ugd2l0aCBXZWJDb3JlIHRvIGFjY2VzcworICAgICAgICBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFja2VkIGJ5Cisg
ICAgICAgIHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
IGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVBZ2VudCB3aGlj
aCB3aWxsCisgICAgICAgIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIGNoYW5nZXMgdG8gdGhlIHJl
bmRlciBsYXllciB0cmVlIHZpYSBhIG5ldyBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnQsIHByb3Zp
ZGluZyBhbiBvYmplY3QKKyAgICAgICAgY29udGFpbmluZyB0aGUgZW50aXJlIGhpZXJhcmNoeSBv
ZiBSZW5kZXJMYXllcnMgZm9yIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuIFRoaXMgaGllcmFyY2h5
IGNhbiBiZSBxdWVyaWVkIGF0IGFueQorICAgICAgICB0aW1lIHVzaW5nIHRoZSAuZ2V0TGF5ZXJU
cmVlKCkgbWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudC4gRmluYWxseSwgdGhlIExheWVyVHJl
ZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXllcklkKCkKKyAgICAgICAgbWV0aG9k
IGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBS
ZW5kZXJMYXllciB3aXRoIHRoZSBwcm92aWRlZCBsYXllciBpZC4KKyAgICAgICAgCisgICAgICAg
IEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFzIGJl
ZW4gY2hhbmdlZCBzdWNoIHRoYXQgaW4gaXRzIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKKyAg
ICAgICAgbWV0aG9kIHdlIGNhbGwgdGhlIGxheWVyVHJlZURpZENoYW5nZSBtZXRob2Qgb24gdGhl
IEluc3BlY3RvckxheWVyVHJlZUFnZW50IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGluZyBuZXcgZmlsZXMu
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkaW5nIG5ldyBmaWxlcy4KKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBBZGRpbmcgbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aTogQWRkaW5nIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajogQWRkaW5nIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZGluZyBuZXcgZmlsZXMuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uOiBEZWZpbmUgbmV3IHR5cGVzIEludFJlY3QgKHgsIHksIHdpZHRoLCBoZWlnaHQp
IGFuZCBMYXllciwgd2hpY2ggaG9sZHMgdGhlIGluZm9ybWF0aW9uIGZvciBhCisgICAgICAgIFJl
bmRlckxheWVyIChsYXllcklkLCBib3VuZHMsIGlzQ29tcG9zaXRlZCwgbWVtb3J5LCBjb21wb3Np
dGVkQm91bmRzKSBhbmQgaXRzIGNoaWxkcmVuIChjaGlsZExheWVycykuIFdlIGFsc28gZGVmaW5l
IHRoZQorICAgICAgICBtZXRob2RzIG9mIHRoZSBMYXllclRyZWVBZ2VudCBvYmplY3QgKGVuYWJs
ZSwgZGlzYWJsZSwgZ2V0TGF5ZXJUcmVlLCBub2RlSWRGb3JMYXllcklkKSBhbmQgdGhlIGxheWVy
VHJlZURpZENoYW5nZSBldmVudCBpdCAgCisgICAgICAgIGZpcmVzLgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2VJbXBsKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAg
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZUFnZW50U3RhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojps
YXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmdldExheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOiBCdWlsZCB0aGUgZW50
aXJlIGhpZXJhcmNoeSBvZiBSZW5kZXJMYXllcnMgZnJvbSB0aGUgcHJvdmlkZWQgCisgICAgICAg
IFJlbmRlckxheWVyLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9ySW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6dW5iaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
Ojpub2RlSWRGb3JMYXllcklkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmg6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6Okluc3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAoSW5zdHJ1bWVudGluZ0FnZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjppbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpzZXRJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKTogQ2FsbCB0aGUgbGF5ZXJUcmVlRGlkQ2hhbmdlIG1ldGhv
ZHMKKyAgICAgICAgb24gdGhlIExheWVyVHJlZUFnZW50IHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uIHRvIGluZm9ybSB0aGUgZnJvbnQtZW5kIHRoYXQgdGhlIFJlbmRlckxheWVyIGhp
ZXJhcmNoeSBoYXMgY2hhbmdlZC4KKwogMjAxMi0xMS0yOCAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4bWFwXSBSRUdSRVNTSU9OKHIxMzU2
MjApIFF0VGVzdEJyb3dzZXIgY3Jhc2hlcyBvbiBHb29nbGUtZ3Jhdml0eS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggM2E1ZDIxNzM1ODQ1ZjBiZDhhNTQ3M2JhNmZiMGQwOWQwZmY1MTJiMi4uNzNi
MzE1MzQwY2YyZTBkOTQ1ZTM3MTU1N2VmNTZjZGJkNDFlNzM3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTE1OTUsNiArMTU5NSw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKyAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggZGNjYmY3YmVkMmJjZWQxOTIwMjA3OGVhNDYxMjE0Nzk4MjRl
ZDdhYi4uYzc2OTg3YzQ3ODg2ODdlNzE5YjMyMTRmN2IyNDU0YWY1YTU3ZDg2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zNzMzLDYgKzM3MzMsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IGM1N2Q1OGIyMGNjNWY1ZTcyZWM4OTUxYWI2MTYyYjMxNzBhZmZhNWUuLjA0Yzc0Y2Uy
NjFkNzZiMjk0YzYwZTBlMTczZjAxZjViN2NlYjA3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzcwLDYg
Kzc3MCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIFwKQEAgLTE5MTUsNiArMTkxNiw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JPdmVybGF5LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMDZmOTEyMDIxZDRmYzNiZWNiODQ1YTNhMjI2MmZmMjUzZTEw
YTNkMi4uYjE0NWFkZTg5OTk3MDRiYWQ4YmM2Njg1ZTgwZTI1NzBhYjNmNTg5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMjg4MCw2ICsyODgwLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckxheWVy
VHJlZUFnZW50LmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMWQzYTIyMzMwZmI4MWE3
YzBhYmMyYWE2MzEwMWEwMWZmOWFhYjI0Li43ZjllNjU4ODQwMGVkODk4NTEyZjEzYzhkYzlhZjUy
MWZjYWQ2YjJkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNzUzMzgsNiArNzUzMzgsMzAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXEluc3BlY3RvckxheWVyVHJlZUFnZW50LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIyZDU3NTZjYzVhNjAw
NWQ0ZGY5Y2VlNzUxZmE5ZDgyZDZhZmZlY2MuLjdjMTM3Njk1ODNlYjI3YTViNDc2ZDRjNzIzNmI3
NzBjMWI5NTA2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE5MTAsNiArMTkxMCw4IEBACiAJCTcxOTA0REVBMTU2QTYzM0Ew
MDFFMUJBNSAvKiBET01TVkdWaWV3U3BlY0ludGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTg1MTIzMzE1Njg2NDk4
MDBDNDA5NjcgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oICovOyB9OwogCQk3MUE1N0RGMTE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyog
U1ZHUGF0aFV0aWxpdGllcy5jcHAgKi87IH07CiAJCTcxQTU3REYyMTU0QkUyNUMwMDA5RDEyMCAv
KiBTVkdQYXRoVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MUE1N0RGMDE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5o
ICovOyB9OworCQk3MUIxRTEyNTE2NDA0OEY3MDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
QjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oICovOyB9
OworCQk3MUIxRTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCMUUx
MjMxNjQwNDhDQzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCAqLzsgfTsK
IAkJNzFDQzdBMjAxNTJBMEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFDQzdBMUYx
NTJBMEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovOyB9OwogCQk3
MURDQjcwMTE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxRENCNkZGMTU2ODE5NzYwMDg2
MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3BwICovOyB9OwogCQk3MURDQjcwMjE1NjgxOTc2MDA4
NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MURDQjcwMDE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5k
UGFuLmggKi87IH07CkBAIC05MTg2LDYgKzkxODgsOCBAQAogCQk3MTg1MTIzMzE1Njg2NDk4MDBD
NDA5NjcgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01TVkdW
aWV3U3BlY0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQTU3REVG
MTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MUE1N0RGMDE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxp
dGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQYXRoVXRpbGl0aWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgw
QSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUNDN0ExRjE1
MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I2RkYxNTY4MTk3NjAwODYyMjcxIC8qIEpT
U1ZHWm9vbUFuZFBhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1NWR1pvb21BbmRQYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MURDQjcw
MDE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU1ZHWm9vbUFuZFBhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ4MTAsNiArMTQ4MTQsOCBAQAogCQkJCUFBNzMxODNDMTU5MjU1QjkwMEE5M0U2
RSAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5jcHAgKi8sCiAJCQkJQUE3MzE4M0QxNTky
NTVCOTAwQTkzRTZFIC8qIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlLmggKi8sCiAJCQkJQUE5
MDMwRkUxNTdFMTZBMDAwMjc2MjQ3IC8qIEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNl
LmpzICovLAorCQkJCTcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAgKi8sCisJCQkJNzFCMUUxMjQxNjQwNDhDQzAwQjE4ODBBIC8qIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmggKi8sCiAJCQkJN0EwRTc2RjYxMEJGMDhFRDAwQTAyNzZFIC8qIElu
amVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc2RjcxMEJGMDhFRDAwQTAyNzZFIC8q
IEluamVjdGVkU2NyaXB0SG9zdC5oICovLAogCQkJCTdBMEU3NkY4MTBCRjA4RUQwMEEwMjc2RSAv
KiBJbmplY3RlZFNjcmlwdEhvc3QuaWRsICovLApAQCAtMjMzMTYsNiArMjMzMjIsNyBAQAogCQkJ
CTg1MDJBQjU0MEFENDM4QzAwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODUwMkFCOTgwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY0dF
bGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjU2MEFENDM4QzAwMDM3
ODU0MCAvKiBET01TVkdGRUZ1bmNSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzFCMUUx
MjUxNjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTAyQUI5OTBBRDQzOTRFMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jUkVsZW1l
bnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFCNTgwQUQ0MzhDMDAwMzc4NTQw
IC8qIERPTVNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUw
MkFCOUEwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MTc0LDYgKzI2MTgxLDcgQEAKIAkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJ
CWZpbGVzID0gKAorCQkJCTcxQjFFMTI2MTY0MDQ5MUEwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNjlEQTE1MDVGMDc2MDAxQjc0
QUMgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUUxQjFEMDBG
RjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYyOUMxNkUxMzAwQzJFMjAwMkQ3OTRFIC8qIEFjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA2
MzVmYTk0MTUwNWIxODNiZWRjY2VjODY3ODU5NDQxMmM2ZWFiMmMzLi5mZjk2Zjk2NDIwMGFiMGZj
ZDI2NzQ1NTZkZWE1YzUzN2YwNDllYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCkBAIC0zMjQxLDUgKzMyNDEsNzkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAg
XSwKICAgICAgICAgImV2ZW50cyI6IFtdCisgICAgfSwKKyAgICB7CisgICAgICAgICJkb21haW4i
OiAiTGF5ZXJUcmVlIiwKKyAgICAgICAgImhpZGRlbiI6IHRydWUsCisgICAgICAgICJ0eXBlcyI6
IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiTGF5ZXJJZCIsCisgICAg
ICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiVW5pcXVlIFJlbmRlckxheWVyIGlkZW50aWZpZXIuIgorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiSW50UmVjdCIsCisgICAgICAgICAg
ICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
QSByZWN0YW5nbGUuIiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJ4IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlv
biI6ICJUaGUgeCBwb3NpdGlvbi4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
eSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHkgcG9zaXRpb24uIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndpZHRoIiwgInR5cGUiOiAiaW50ZWdl
ciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgd2lkdGggbWV0cmljLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJoZWlnaHQiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9u
IjogIlRoZSBoZWlnaHQgbWV0cmljLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgImlkIjogIkxheWVyIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmpl
Y3QiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCBh
IGNvbXBvc2l0aW5nIGxheWVyLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibGF5ZXJJZCIsICIkcmVmIjogIkxheWVySWQi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIHVuaXF1ZSBpZCBmb3IgdGhpcyBsYXllci4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm91bmRzIiwgIiRyZWYiOiAiSW50UmVjdCIsICJk
ZXNjcmlwdGlvbiI6ICJCb3VuZHMgb2YgdGhlIGxheWVyLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJpc0NvbXBvc2l0ZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0
aW9uIjogIkluZGljYXRlcyB3aGV0aGVyIHRoaXMgbGF5ZXIgaXMgY29tcG9zaXRlZC4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWVtb3J5IiwgInR5cGUiOiAiaW50ZWdlciIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJFc3RpbWF0ZWQgbWVtb3J5IHVzZWQg
YnkgdGhpcyBsYXllci4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY29tcG9z
aXRlZEJvdW5kcyIsICIkcmVmIjogIkludFJlY3QiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGJvdW5kcyBvZiB0aGUgY29tcG9zaXRlZCBsYXllci4iIH0sCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2hpbGRMYXllcnMiLCAidHlwZSI6ICJhcnJheSIsICJv
cHRpb25hbCI6IHRydWUsICJpdGVtcyI6IHsgIiRyZWYiOiAiTGF5ZXIiIH0sICJkZXNjcmlwdGlv
biI6ICJDaGlsZCBsYXllcnMuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAg
ICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICBdLAorICAgICAgICAiY29t
bWFuZHMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxl
IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBjb21wb3NpdGluZyB0
cmVlIGluc3BlY3Rpb24uIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRGlzYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0aW9uLiIKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0TGF5ZXJUcmVlIiwK
KyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgbGF5ZXIgdHJlZSBz
dHJ1Y3R1cmUgb2YgdGhlIGN1cnJlbnQgcGFnZS4iLAorICAgICAgICAgICAgICAgICJyZXR1cm5z
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVyVHJlZSIsICIkcmVmIjog
IkxheWVyIiwgImRlc2NyaXB0aW9uIjogIkxheWVyIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBjdXJy
ZW50IHBhZ2UuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVu
IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
bmFtZSI6ICJub2RlSWRGb3JMYXllcklkIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmV0dXJucyB0aGUgbm9kZSBpZCBmb3IgYSBnaXZlbiBsYXllciBpZC4iLAorICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxh
eWVySWQiLCAiJHJlZiI6ICJMYXllcklkIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2Rl
SWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBub2RlIGlkIGZv
ciB0aGUgZ2l2ZW4gbGF5ZXIgaWQuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICBdLAorICAgICAgICAi
ZXZlbnRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImxheWVy
VHJlZURpZENoYW5nZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibGF5ZXJUcmVlIiwgIiRyZWYiOiAiTGF5ZXIiIH0KKyAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIF0KICAgICB9XQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggZDE5
YWQyZTBhMDIzYjk5YTg2NDQ1NjdhMzE0Zjc0YTFkZmY3MDcxZi4uMDMwMWIxY2NhZGE1MjUzZjBl
OWFiZTVlOGIxODY5NjFmODBhOTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9ySGlzdG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAiCisjaW5jbHVkZSAiSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUFnZW50LmNw
cCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmluZGV4IGNhOTJjNGFlMjM2ZDA1YWUzYmY4NDNkZjhkYWU3ODhhMzZhMDQ3
NWUuLmUzYjAyN2FmNjFkNjU5MmQyZjU4MzcyMTVlYWM1NTcxYTBjYTNiNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU2LDYg
KzU2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckluZGV4ZWREQkFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKQEAgLTE1MSw2ICsxNTIsOCBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckNhbnZh
c0FnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgp
LCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOwogCisgICAgbV9hZ2VudHMu
YXBwZW5kKEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlKSk7CisKICAgICBBU1NFUlRfQVJHKGluc3Bl
Y3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQobV9pbnNwZWN0b3JBZ2VudAogICAgICAgICAs
IGNvbnNvbGVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyYWNkNjJiNTQ0MzZmZWVmN2Q3ODIzYmUzNzE0
NTJmZDI4MTg2NDE4Li41YzVhNTI4Y2FiNTFmYTc0MmM0OTU0NjM1YmUyZDJhNjI3OTBiMWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNlQWdlbnQuaCIKQEAg
LTkxMiw3ICs5MTMsMTAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1p
dExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnQKICAgICAgICAgICAgIGRv
bVN0b3JhZ2VBZ2VudC0+Y2xlYXJSZXNvdXJjZXMoKTsKICAgICAgICAgaWYgKEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50
KCkpCiAgICAgICAgICAgICBkb21BZ2VudC0+c2V0RG9jdW1lbnQobWFpbkZyYW1lLT5kb2N1bWVu
dCgpKTsKLQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgaWYgKElu
c3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCisgICAgICAgICAgICBsYXllclRyZWVBZ2Vu
dC0+cmVzZXQoKTsKKyNlbmRpZgogICAgICAgICBpbnNwZWN0b3JBZ2VudC0+ZGlkQ29tbWl0TG9h
ZCgpOwogICAgIH0KICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKQEAgLTEzMDAsNiArMTMwNCwx
NCBAQCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6b3Zl
cnJpZGVEZXZpY2VPcmllbnRhdGlvbkltcGwoSQogICAgIHJldHVybiBkZXZpY2VPcmllbnRhdGlv
bjsKIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit7CisgICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFn
ZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckxheWVy
VHJlZUFnZW50KCkpCisgICAgICAgIGxheWVyVHJlZUFnZW50LT5sYXllclRyZWVEaWRDaGFuZ2Uo
KTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5B
QkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA5NjM0NThkNGQ1MzU5YTJiZTU2YjcyZjBjZWU5MDZh
MjEzYjYxY2FjLi4wOTFhYWZhOTBmZWIyZmViMjQxZWM1YjYzMTY4NDdiMmE4ZTY0ZjA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCkBAIC0yODAsNiArMjgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmll
bnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVu
dGF0aW9uRGF0YSopOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0
YXRpYyB2b2lkIGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2Jq
ZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9NV3JhcHBlcldv
cmxkKik7CkBAIC00NTksNiArNDYzLDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRp
YyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb25JbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFu
Z2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIGludCBz
X2Zyb250ZW5kQ291bnRlcjsKICNlbmRpZgogfTsKQEAgLTE1NDIsNiArMTU1MSwxNCBAQCBpbmxp
bmUgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om92ZXJy
aWRlRGV2aWNlT3JpZW50YXRpbwogICAgIHJldHVybiBkZXZpY2VPcmllbnRhdGlvbjsKIH0KIAor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKFBhZ2UqIHBhZ2UpCit7CisgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSkKKyAgICAgICAgbGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29sbGVjdGluZ0hUTUxQYXJzZUVy
cm9ycyhQYWdlKiBwYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJjNTI4N2E4NmJmYTkyODk2
NDc1NjA3ZjFkNzNlNTY4NzAyMDc1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTAsMCArMSwyMjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aCIKKworI2luY2x1ZGUgIklkZW50aWZpZXJzRmFjdG9yeS5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JTdGF0ZS5oIgorI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK25hbWVzcGFjZSBMYXllclRyZWVBZ2VudFN0YXRlIHsKK3N0YXRpYyBjb25zdCBj
aGFyIGxheWVyVHJlZUFnZW50RW5hYmxlZFtdID0gImxheWVyVHJlZUFnZW50RW5hYmxlZCI7Cit9
OworCitJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0
YXRlLCBQYWdlKiBwYWdlKQorICAgIDogSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3RvckxheWVy
VHJlZUFnZW50PigiTGF5ZXJUcmVlIiwgaW5zdHJ1bWVudGluZ0FnZW50cywgc3RhdGUpCisgICAg
LCBtX2luc3BlY3RlZFBhZ2UocGFnZSkKKyAgICAsIG1fZnJvbnRlbmQoMCkKKyAgICAsIG1fZW5h
YmxlZChmYWxzZSkKK3sKKyAgICAKK30KKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudCgpCit7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudChudWxscHRyKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQorewor
ICAgIEFTU0VSVChmcm9udGVuZCk7CisgICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5sYXllcnRy
ZWUoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Y2xlYXJGcm9udGVuZCgp
Cit7CisgICAgbV9mcm9udGVuZCA9IDA7CisgICAgZGlzYWJsZSgwKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6cmVzdG9yZSgpCit7CisgICAgbV9lbmFibGVkID0gbV9zdGF0
ZS0+Z2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQp
OworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXNldCgpCit7CisgICAgbV9k
b2N1bWVudExheWVyVG9JZE1hcC5jbGVhcigpOworICAgIG1faWRUb0xheWVyLmNsZWFyKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit7
CisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IHRy
dWU7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRy
ZWVBZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYgKCFtX2VuYWJsZWQp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2VuYWJsZWQgPSBmYWxzZTsKKyAgICBtX3N0YXRlLT5z
ZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgbV9l
bmFibGVkKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJl
ZUFnZW50KG51bGxwdHIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXll
clRyZWVEaWRDaGFuZ2UoKQoreworICAgIG1fZnJvbnRlbmQtPmxheWVyVHJlZURpZENoYW5nZShi
dWlsZE9iamVjdEZvclJvb3RMYXllcigpKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6Z2V0TGF5ZXJUcmVlKEVycm9yU3RyaW5nKiBlcnJvciwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpMYXllclRyZWU6OkxheWVyPiYgb2JqZWN0KQoreworICAgIG9iamVjdCA9IGJ1aWxkT2JqZWN0
Rm9yUm9vdExheWVyKCk7CisgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKK30KKworUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKCkKK3sKKyAgICByZXR1cm4gYnVpbGRPYmplY3RGb3JM
YXllcihtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKS0+Y29t
cG9zaXRvcigpLT5yb290UmVuZGVyTGF5ZXIoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVj
dEZvckxheWVyKFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBib29sIGlzQ29tcG9z
aXRlZCA9IHJlbmRlckxheWVyLT5pc0NvbXBvc2l0ZWQoKTsKKworICAgIC8vIEJhc2ljIHNldCBv
ZiBwcm9wZXJ0aWVzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4g
bGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAg
ICAgICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikpCisgICAgICAgIC5zZXRCb3VuZHMo
YnVpbGRPYmplY3RGb3JJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocmVuZGVyTGF5ZXItPmxvY2Fs
Qm91bmRpbmdCb3goKSkpKQorICAgICAgICAuc2V0SXNDb21wb3NpdGVkKGlzQ29tcG9zaXRlZCk7
CisKKyAgICAvLyBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBjb21wb3NpdGVkIGxheWVycyBvbmx5
LgorICAgIGlmIChpc0NvbXBvc2l0ZWQpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBi
YWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNl
dE1lbW9yeShiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpKTsKKyAgICAgICAg
bGF5ZXJPYmplY3QtPnNldENvbXBvc2l0ZWRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGJh
Y2tpbmctPmNvbXBvc2l0ZWRCb3VuZHMoKSkpOworICAgIH0KKworICAgIC8vIFByb2Nlc3MgY2hp
bGRyZW4gbGF5ZXJzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkxheWVyVHJlZTo6TGF5ZXI+ID4gY2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOworCisgICAgcmVuZGVyTGF5
ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOworCisgICAgLy8gQ2hlY2sgaWYgd2UgaGF2
ZSBhIHJlZmxlY3Rpb24gbGF5ZXIuCisgICAgaWYgKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5
ZXIoKSkKKyAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVy
KHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkpOworCisgICAgaWYgKHJlbmRlckxheWVy
LT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogbmVnWk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAg
ICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgICAg
ICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobmVnWk9yZGVyTGlz
dC0+YXQoaSkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgewor
ICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICBjaGls
ZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobm9ybWFsRmxvd0xpc3QtPmF0
KGkpKSk7CisgICAgfQorICAgIAorICAgIGlmIChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRl
eHQoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3Qg
PSByZW5kZXJMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlz
dFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+
YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHBvc1pPcmRlckxpc3QtPmF0KGkpKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsYXllck9iamVjdC0+c2V0Q2hpbGRMYXllcnMoY2hpbGRyZW5B
cnJheSk7CisgICAgCisgICAgcmV0dXJuIGxheWVyT2JqZWN0OworfQorCitQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpi
dWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4g
VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFgo
cmVjdC54KCkpCisgICAgICAgIC5zZXRZKHJlY3QueSgpKQorICAgICAgICAuc2V0V2lkdGgocmVj
dC53aWR0aCgpKQorICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpLnJlbGVhc2UoKTsK
K30KKworU3RyaW5nIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxh
eWVyKiBsYXllcikKK3sKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gIiI7CisgICAg
U3RyaW5nIGlkZW50aWZpZXIgPSBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXllcik7Cisg
ICAgaWYgKGlkZW50aWZpZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWRlbnRpZmllciA9IElkZW50
aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOworICAgICAgICBtX2RvY3VtZW50TGF5
ZXJUb0lkTWFwLnNldChsYXllciwgaWRlbnRpZmllcik7CisgICAgICAgIG1faWRUb0xheWVyLnNl
dChpZGVudGlmaWVyLCBsYXllcik7CisgICAgfQorICAgIHJldHVybiBpZGVudGlmaWVyOworfQor
Cit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIq
IGxheWVyKQoreworICAgIFN0cmluZyBpZGVudGlmaWVyID0gbV9kb2N1bWVudExheWVyVG9JZE1h
cC5nZXQobGF5ZXIpOworICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnJlbW92ZShsYXllcik7CisgICAgbV9p
ZFRvTGF5ZXIucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50Ojpub2RlSWRGb3JMYXllcklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBsYXllcklkLCBpbnQqIHJlc3VsdE5vZGVJZCkKK3sKKyAgICAvLyBPYnRhaW4gdGhl
IFJlbmRlckxheWVyIGZyb20gdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQuCisgICAgY29uc3QgUmVu
ZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOworICAgIC8v
IEdldCB0aGUgbm9kZSBmb3IgdGhpcyBSZW5kZXJMYXllci4KKyAgICBOb2RlKiBub2RlID0gcmVu
ZGVyTGF5ZXItPnJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICAvLyBHZXQgdGhlIG5vZGUgaWQgZnJv
bSB0aGUgRE9NIGFnZW50IGFuZCByZXR1cm4gaXQgdG8gdGhlIGZyb250LWVuZC4KKyAgICBJbnNw
ZWN0b3JET01BZ2VudCogaW5zcGVjdG9yRE9NQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gaW5zcGVjdG9y
RE9NQWdlbnQtPmJvdW5kTm9kZUlkKG5vZGUtPm93bmVyRG9jdW1lbnQoKSk7CisgICAgKnJlc3Vs
dE5vZGVJZCA9IGluc3BlY3RvckRPTUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQoZXJyb3JTdHJp
bmcsIGRvY3VtZW50Tm9kZUlkLCBub2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYTBiMWNlZDlhMTIzYjYxNGRiNjEzZjMyYzc2
MTQ5OGYyODBhNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaAor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OworY2xhc3MgUGFnZTsKKwordHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIElu
c3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JMYXllclRyZWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TGF5
ZXJUcmVlQ29tbWFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvckxheWVyVHJlZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChpbnN0
cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgcGFnZSkpOworICAgIH0KKyAgICB+SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVh
bCB2b2lkIHJlc3RvcmUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZSgpOworCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KKyAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF5ZXJUcmVlKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiYpOworICAgIHZpcnR1
YWwgdm9pZCBub2RlSWRGb3JMYXllcklkKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBsYXll
cklkLCBpbnQqIHJlc3VsdE5vZGVJZCk7CisKK3ByaXZhdGU6CisgICAgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSopOwor
CisgICAgLy8gUmVuZGVyTGF5ZXItcmVsYXRlZCBtZXRob2RzLgorICAgIFN0cmluZyBiaW5kKGNv
bnN0IFJlbmRlckxheWVyKik7CisgICAgdm9pZCB1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsK
KworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2Jq
ZWN0Rm9yUm9vdExheWVyKCk7ICAgCisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JMYXllcihSZW5kZXJMYXllciopOworICAgIFBhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdD4gYnVpbGRPYmplY3RGb3JJbnRS
ZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgCisgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdl
OworICAgIEluc3BlY3RvckZyb250ZW5kOjpMYXllclRyZWUqIG1fZnJvbnRlbmQ7CisgICAgYm9v
bCBtX2VuYWJsZWQ7CisKKyAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgU3RyaW5nPiBt
X2RvY3VtZW50TGF5ZXJUb0lkTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBjb25zdCBSZW5kZXJM
YXllcio+IG1faWRUb0xheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
dHJ1bWVudGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaAppbmRleCA4ODRkOWJiMTE2Zjk0MzEzYzJiMjg3YmViNzhlZTlkNzJlMTdiNDVm
Li43ZTI3MDlmNzJlYzhjN2ZlYjMzMTcwYjNlZTAyMzg1YTFlYzZhODFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTQ3LDYgKzQ3LDcg
QEAgY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDsKIGNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OwpAQCAtNjUsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IDogbV9pbnNwZWN0b3JBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yUGFnZUFnZW50KDAp
CiAgICAgICAgICwgbV9pbnNwZWN0b3JDU1NBZ2VudCgwKQorICAgICAgICAsIG1faW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckNvbnNvbGVBZ2VudCgwKQog
ICAgICAgICAsIG1faW5zcGVjdG9yRE9NQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvclJl
c291cmNlQWdlbnQoMCkKQEAgLTE1MywxMCArMTU1LDE4IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0
b3JDYW52YXNBZ2VudCogaW5zcGVjdG9yQ2FudmFzQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
c3BlY3RvckNhbnZhc0FnZW50OyB9CiAgICAgdm9pZCBzZXRJbnNwZWN0b3JDYW52YXNBZ2VudChJ
bnNwZWN0b3JDYW52YXNBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JDYW52YXNBZ2VudCA9IGFn
ZW50OyB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQqIGluc3BlY3RvckxheWVyVHJlZUFnZW50KCkgY29uc3QgeyByZXR1cm4g
bV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudDsgfQorICAgIHZvaWQgc2V0SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQgPSBhZ2VudDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX2luc3Bl
Y3RvclBhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3JDU1NBZ2VudCogbV9pbnNwZWN0b3JDU1NBZ2Vu
dDsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQqIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7CisjZW5kaWYKICAgICBJbnNwZWN0
b3JDb25zb2xlQWdlbnQqIG1faW5zcGVjdG9yQ29uc29sZUFnZW50OwogICAgIEluc3BlY3RvckRP
TUFnZW50KiBtX2luc3BlY3RvckRPTUFnZW50OwogICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQq
IG1faW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggODcwYmYxZGRmYTczOTU5YzBlZTBh
MmNjMThlOWVmYTg4NTljZjIxYy4uMTkxYTdjNzdmOWE5ZWNkMzQwYmVhZDY2OGI2ZjYxNGQ5MjZj
ZjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlTGlz
dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJBcHBsZXQuaCIKQEAgLTUw
OCw2ICs1MDksOSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRp
bmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogCiAgICAgaWYgKCFoYXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgIGVuYWJsZUNvbXBvc2l0aW5nTW9kZShmYWxz
ZSk7CisKKyAgICAvLyBJbmZvcm0gdGhlIGluc3BlY3RvciB0aGF0IHRoZSBsYXllciB0cmVlIGhh
cyBjaGFuZ2VkLgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hh
bmdlKHRoaXMtPnBhZ2UoKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176977</attachid>
            <date>2012-11-30 08:53:43 -0800</date>
            <delta_ts>2012-12-01 08:28:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121130175114.patch</filename>
            <type>text/plain</type>
            <size>41046</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk2MmE1YmQ4ZTE4Mzhk
OWM1OWYxMmYzM2I1YTQwOTQ4YjI1YjgyOS4uMDg4ZTdhZWVmNTU3NTg0YjcyOTMyMTI0NGFlM2Iw
NzgzN2JjNzcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTExLTMwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2Ugd2l0aCBXZWJDb3JlIHRvIGFjY2VzcworICAgICAgICBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFja2VkIGJ5Cisg
ICAgICAgIHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
IGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVBZ2VudCB3aGlj
aCB3aWxsCisgICAgICAgIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIGNoYW5nZXMgdG8gdGhlIHJl
bmRlciBsYXllciB0cmVlIHZpYSBhIG5ldyBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnQsIHByb3Zp
ZGluZyBhbiBvYmplY3QKKyAgICAgICAgY29udGFpbmluZyB0aGUgZW50aXJlIGhpZXJhcmNoeSBv
ZiBSZW5kZXJMYXllcnMgZm9yIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuIFRoaXMgaGllcmFyY2h5
IGNhbiBiZSBxdWVyaWVkIGF0IGFueQorICAgICAgICB0aW1lIHVzaW5nIHRoZSAuZ2V0TGF5ZXJU
cmVlKCkgbWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudC4gRmluYWxseSwgdGhlIExheWVyVHJl
ZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXllcklkKCkKKyAgICAgICAgbWV0aG9k
IGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBS
ZW5kZXJMYXllciB3aXRoIHRoZSBwcm92aWRlZCBsYXllciBpZC4KKyAgICAgICAgCisgICAgICAg
IEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFzIGJl
ZW4gY2hhbmdlZCBzdWNoIHRoYXQgaW4gaXRzIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKKyAg
ICAgICAgbWV0aG9kIHdlIGNhbGwgdGhlIGxheWVyVHJlZURpZENoYW5nZSBtZXRob2Qgb24gdGhl
IEluc3BlY3RvckxheWVyVHJlZUFnZW50IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOiBEZWZpbmUg
bmV3IHR5cGVzIEludFJlY3QgKHgsIHksIHdpZHRoLCBoZWlnaHQpIGFuZCBMYXllciwgd2hpY2gg
aG9sZHMgdGhlIGluZm9ybWF0aW9uIGZvciBhCisgICAgICAgIFJlbmRlckxheWVyIChsYXllcklk
LCBib3VuZHMsIGlzQ29tcG9zaXRlZCwgbWVtb3J5LCBjb21wb3NpdGVkQm91bmRzKSBhbmQgaXRz
IGNoaWxkcmVuIChjaGlsZExheWVycykuIFdlIGFsc28gZGVmaW5lIHRoZQorICAgICAgICBtZXRo
b2RzIG9mIHRoZSBMYXllclRyZWVBZ2VudCBvYmplY3QgKGVuYWJsZSwgZGlzYWJsZSwgZ2V0TGF5
ZXJUcmVlLCBub2RlSWRGb3JMYXllcklkKSBhbmQgdGhlIGxheWVyVHJlZURpZENoYW5nZSBldmVu
dCBpdCAgCisgICAgICAgIGZpcmVzLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJ
bk9uZS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxl
cik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRv
RnJvbnRlbmQpOiBOZXcgbWV0aG9kIGZhY2lsaXRhdGluZyBwdXNoaW5nIHRoZSBub2RlIGFzc29j
aWF0ZWQgd2l0aCAKKyAgICAgICAgYSBnaXZlbiBSZW5kZXJMYXllciB0byB0aGUgZnJvbnQtZW5k
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVE
aWRDaGFuZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoTGF5ZXJUcmVlQWdlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNwZWN0b3JMYXllclRyZWVB
Z2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6c2V0RnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNsZWFy
RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJl
c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjplbmFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpc2FibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVuZGVyTGF5
ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmdldExheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6YnVpbGRPYmplY3RGb3JSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOiBCdWlsZCB0aGUgZW50aXJlIGhp
ZXJhcmNoeSBvZiBSZW5kZXJMYXllcnMgZnJvbSB0aGUgcHJvdmlkZWQgCisgICAgICAgIFJlbmRl
ckxheWVyLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9ySW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6YmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
dW5iaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2Rl
SWRGb3JMYXllcklkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6Oklu
c3RydW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAoSW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjppbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpzZXRJbnNwZWN0b3JM
YXllclRyZWVBZ2VudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzKTogQ2FsbCB0aGUgbGF5ZXJUcmVlRGlkQ2hhbmdlIG1ldGhvZCBvbiB0
aGUgTGF5ZXJUcmVlQWdlbnQgdmlhIHRoZSAKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHRvIGluZm9ybSB0aGUgZnJvbnQtZW5kIHRoYXQgdGhlIFJlbmRlckxheWVyIGhpZXJhcmNo
eSBoYXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQpOiBDYWxsIHRoZSBy
ZW5kZXJMYXllckRlc3Ryb3llZCBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50IHZpYSAKKyAg
ICAgICAgdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB0byB1bmJpbmQgdGhlIGxheWVyIHRo
YXQgaXMgYmVpbmcgZGVzdHJveWVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaDoKKyAgICAgICAgKFJlbmRlckxheWVyQ29tcG9zaXRvcik6CisKIDIwMTItMTEt
MjggIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAg
W1RleG1hcF0gUkVHUkVTU0lPTihyMTM1NjIwKSBRdFRlc3RCcm93c2VyIGNyYXNoZXMgb24gR29v
Z2xlLWdyYXZpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNhNWQyMTczNTg0NWYwYmQ4YTU0
NzNiYTZmYjBkMDlkMGZmNTEyYjIuLjczYjMxNTM0MGNmMmUwZDk0NWUzNzE1NTdlZjU2Y2RiZDQx
ZTczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTk1LDYgKzE1OTUsNyBAQCBTRVQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGRjY2JmN2JlZDJi
Y2VkMTkyMDIwNzhlYTQ2MTIxNDc5ODI0ZWQ3YWIuLmM3Njk4N2M0Nzg4Njg3ZTcxOWIzMjE0Zjdi
MjQ1NGFmNWE1N2Q4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzczMyw2
ICszNzMzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBjNTdkNThiMjBjYzVmNWU3MmVjODk1MWFi
NjE2MmIzMTcwYWZmYTVlLi4wNGM3NGNlMjYxZDc2YjI5NGM2MGUwZTE3M2YwMWY1YjdjZWIwNzQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTc3MCw2ICs3NzAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckhpc3RvcnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCkBA
IC0xOTE1LDYgKzE5MTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmggXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCisgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA2ZjkxMjAyMWQ0
ZmMzYmVjYjg0NWEzYTIyNjJmZjI1M2UxMGEzZDIuLmIxNDVhZGU4OTk5NzA0YmFkOGJjNjY4NWU4
MGUyNTcwYWIzZjU4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4ODAsNiArMjg4MCw4IEBACiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAg
J2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAnLAorICAgICAgICAgICAgJ2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggMTFkM2EyMjMzMGZiODFhN2MwYWJjMmFhNjMxMDFhMDFmZjlhYWIyNC4uN2Y5ZTY1
ODg0MDBlZDg5ODUxMmYxM2M4ZGM5YWY1MjFmY2FkNmIyZCAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc1MzM4LDYgKzc1MzM4LDMwIEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiMmQ1NzU2Y2M1YTYwMDVkNGRmOWNlZTc1MWZhOWQ4MmQ2YWZmZWNjLi43YzEz
NzY5NTgzZWIyN2E1YjQ3NmQ0YzcyMzZiNzcwYzFiOTUwNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTEwLDYgKzE5MTAs
OCBAQAogCQk3MTkwNERFQTE1NkE2MzNBMDAxRTFCQTUgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5h
bC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJu
YWwuaCAqLzsgfTsKIAkJNzFBNTdERjExNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRp
ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFB
NTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwICovOyB9OwogCQk3
MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlE
MTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNzFCMUUxMjUxNjQwNDhGNzAwQjE4
ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCAqLzsgfTsKKwkJNzFCMUUxMjYxNjQwNDkxQTAwQjE4ODBBIC8q
IEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHAgKi87IH07CiAJCTcxQ0M3QTIwMTUyQTBCRkUwMDlFRUFGOSAvKiBT
VkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZH
Wm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MURDQjZGRjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCAqLzsg
fTsKIAkJNzFEQ0I3MDIxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFEQ0I3MDAxNTY4MTk3
NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovOyB9OwpAQCAtOTE4Niw2ICs5MTg4LDgg
QEAKIAkJNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxp
dGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoVXRp
bGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNTdERjAxNTRCRTI1
QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIxRTEyNDE2NDA0OEND
MDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJBMEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51
bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5p
bWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRENC
NkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdab29tQW5kUGFuLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFu
ZFBhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR1pvb21BbmRQYW4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODEwLDYgKzE0ODE0LDggQEAKIAkJ
CQlBQTczMTgzQzE1OTI1NUI5MDBBOTNFNkUgLyogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUu
Y3BwICovLAogCQkJCUFBNzMxODNEMTU5MjU1QjkwMEE5M0U2RSAvKiBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZS5oICovLAogCQkJCUFBOTAzMEZFMTU3RTE2QTAwMDI3NjI0NyAvKiBJbmplY3Rl
ZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcyAqLywKKwkJCQk3MUIxRTEyMzE2NDA0OENDMDBC
MTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovLAorCQkJCTcxQjFFMTI0MTY0
MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oICovLAogCQkJCTdBMEU3
NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdB
MEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk3
QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLywKQEAg
LTIzMzE2LDYgKzIzMzIyLDcgQEAKIAkJCQk4NTAyQUI1NDBBRDQzOEMwMDAzNzg1NDAgLyogRE9N
U1ZHRkVGdW5jR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjk4MEFENDM5NEUw
MDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTAyQUI1NjBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jUkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTcxQjFFMTI1MTY0MDQ4RjcwMEIxODgwQSAvKiBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFCOTkwQUQ0Mzk0RTAwMzc4
NTQwIC8qIERPTVNWR0ZFRnVuY1JFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDJBQjU4MEFENDM4QzAwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjlBMEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjE3NCw2
ICsyNjE4MSw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3MUIxRTEyNjE2NDA0OTFB
MDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjlDMTZFMTMwMEMyRTIwMDJENzk0RSAvKiBBY2Nl
c3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNjM1ZmE5NDE1MDViMTgzYmVkY2NlYzg2Nzg1OTQ0MTJj
NmVhYjJjMy4uZmRlMzM3N2IxOThmNWIyYTVkZjNjYzI5ZGY0NGY4NDBlNmFmMTA0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzI0MSw1ICszMjQxLDc2IEBA
CiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbXQorICAgIH0s
CisgICAgeworICAgICAgICAiZG9tYWluIjogIkxheWVyVHJlZSIsCisgICAgICAgICJoaWRkZW4i
OiB0cnVlLAorICAgICAgICAidHlwZXMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgImlkIjogIkxheWVySWQiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBSZW5kZXJMYXllciBpZGVudGlm
aWVyLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlk
IjogIkludFJlY3QiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlLiIsCisgICAgICAgICAgICAgICAg
InByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBl
IjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHggcG9zaXRpb24uIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0
aW9uIjogIlRoZSB5IHBvc2l0aW9uLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHdpZHRoIG1l
dHJpYy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUi
OiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGVpZ2h0IG1ldHJpYy4iIH0KKyAgICAg
ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJMYXllciIsCisgICAg
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYSBjb21wb3NpdGluZyBsYXllci4iLAorICAgICAgICAg
ICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxh
eWVySWQiLCAiJHJlZiI6ICJMYXllcklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSB1bmlxdWUgaWQg
Zm9yIHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdW5k
cyIsICIkcmVmIjogIkludFJlY3QiLCAiZGVzY3JpcHRpb24iOiAiQm91bmRzIG9mIHRoZSBsYXll
ci4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNDb21wb3NpdGVkIiwgInR5
cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxh
eWVyIGlzIGNvbXBvc2l0ZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1l
bW9yeSIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiRXN0aW1hdGVkIG1lbW9yeSB1c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImNvbXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0Iiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2YgdGhlIGNvbXBv
c2l0ZWQgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNoaWxkTGF5
ZXJzIiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVm
IjogIkxheWVyIiB9LCAiZGVzY3JpcHRpb24iOiAiQ2hpbGQgbGF5ZXJzLiIgfQorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0K
KyAgICAgICAgXSwKKyAgICAgICAgImNvbW1hbmRzIjogWworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkVuYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0aW9uLiIKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGNvbXBvc2l0aW5nIHRyZWUgaW5z
cGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogImdldExheWVyVHJlZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlJldHVybnMgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBjdXJyZW50IHBhZ2UuIiwK
KyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJsYXllclRyZWUiLCAiJHJlZiI6ICJMYXllciIsICJkZXNjcmlwdGlvbiI6ICJMYXllciB0
cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIgfQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAibm9kZUlkRm9yTGF5ZXJJZCIsCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5vZGUgaWQgZm9yIGEgZ2l2
ZW4gbGF5ZXIgaWQuIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllcklkIiwgIiRyZWYiOiAiTGF5ZXJJZCIgfQorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgbm9kZSBpZCBmb3IgdGhlIGdpdmVuIGxheWVyIGlkLiIgfQorICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAg
IH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiCisgICAgICAgICAgICB9Cisg
ICAgICAgIF0KICAgICB9XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBbGxJbk9uZS5jcHAKaW5kZXggZDE5YWQyZTBhMDIzYjk5YTg2NDQ1NjdhMzE0Zjc0YTFkZmY3
MDcxZi4uMDMwMWIxY2NhZGE1MjUzZjBlOWFiZTVlOGIxODY5NjFmODBhOTBmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC01OCw2ICs1
OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIgogI2luY2x1ZGUg
Ikluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmNw
cCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGNhOTJjNGFlMjM2ZDA1
YWUzYmY4NDNkZjhkYWU3ODhhMzZhMDQ3NWUuLmUzYjAyN2FmNjFkNjU5MmQyZjU4MzcyMTVlYWM1
NTcxYTBjYTNiNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFnZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIK
QEAgLTE1MSw2ICsxNTIsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9s
bGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdl
bnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5n
ZXQoKSkpOwogCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlKSk7
CisKICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKICAg
ICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQobV9p
bnNwZWN0b3JBZ2VudAogICAgICAgICAsIGNvbnNvbGVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMWIwODkzNDcyMWEyZmVkMzlj
MzJiYTI0MDBlMzA4MDc4NjRkMTMzYy4uYjVkNGNlNzhlZjU2MjA4ODBmMTAwZWNkMDczYmRlM2Y5
ODdkNTQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC01NjMsNiArNTYzLDExIEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgIHJldHVybiBtYXAtPmdldChu
b2RlVG9QdXNoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhGb3JS
ZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQorewor
ICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHJlbmRlckxheWVyLT5yZW5kZXJlcigp
LT5ub2RlKCkpOworfQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKE5vZGUq
IG5vZGUpCiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDNiNzI2
NTI4MzFiMTFjYjFjNDNmZTFiODFkZjI2OTBkY2FiYjM0MmQuLmQ3NzM1ZGEyOWNjZDk0OTUyOWVj
YWU3ZDgxYmU2OGNhZTk2NTRkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xOTksNiArMjAwLDcgQEAgcHVibGljOgog
CiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAgICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQorICAgIGludCBw
dXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsK
IAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
SW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDJhY2Q2MmI1NDQzNmZlZWY3
ZDc4MjNiZTM3MTQ1MmZkMjgxODY0MTguLjVjNWUxYzk2ZjUwZGMxMDQ5MmIzMmIzN2NlZGIwMjg0
ZDdlMDg3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVj
dG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oIgpAQCAtOTEyLDcgKzkxMywxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudAogICAg
ICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5jbGVhclJlc291cmNlcygpOwogICAgICAgICBpZiAo
SW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yRE9NQWdlbnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1bWVudChtYWluRnJh
bWUtPmRvY3VtZW50KCkpOwotCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAg
ICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgICAgIGxh
eWVyVHJlZUFnZW50LT5yZXNldCgpOworI2VuZGlmCiAgICAgICAgIGluc3BlY3RvckFnZW50LT5k
aWRDb21taXRMb2FkKCk7CiAgICAgfQogICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKQpAQCAtMTMw
MCw2ICsxMzA0LDIwIEBAIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJCiAgICAgcmV0dXJuIGRldmlj
ZU9yaWVudGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPmxheWVyVHJl
ZURpZENoYW5nZSgpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVy
TGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxh
eWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA5NjM0NThk
NGQ1MzU5YTJiZTU2YjcyZjBjZWU5MDZhMjEzYjYxY2FjLi4wM2IxNWU5ZWI1M2MxNzQ5MWI3OWRj
MzIzZGU0MDQ0YmQ0ZDgxYTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VS
TDsKIGNsYXNzIE5vZGU7CitjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVjdDsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0yODAs
NiArMjgxLDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEq
IG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVudGF0aW9uRGF0YSop
OwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0YXRpYyB2b2lkIGxh
eWVyVHJlZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0
cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0
SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9NV3JhcHBlcldvcmxk
Kik7CkBAIC00NTksNiArNDY1LDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRpYyBE
ZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb25JbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJMYXllckRl
c3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlbmRlckxheWVyKik7Cisj
ZW5kaWYKKwogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CiAjZW5kaWYKIH07CkBA
IC0xNTQyLDYgKzE1NTQsMjAgQEAgaW5saW5lIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW8KICAgICByZXR1cm4g
ZGV2aWNlT3JpZW50YXRpb247CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5n
ZShQYWdlKiBwYWdlKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIGxh
eWVyVHJlZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSog
cGFnZSwgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UocGFnZSkpCisgICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVkSW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzLCByZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbGxlY3RpbmdIVE1M
UGFyc2VFcnJvcnMoUGFnZSogcGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmZGEzNjllYzZh
Njc2NDM2MGM0ZDk5YWM2MzAyODkwOGZhOWJkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0wLDAgKzEs
MjI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJl
ZUFnZW50LmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
CisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgorI2luY2x1ZGUgIlJl
bmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5ZXJUcmVlQWdlbnRTdGF0ZSB7CitzdGF0aWMg
Y29uc3QgY2hhciBsYXllclRyZWVBZ2VudEVuYWJsZWRbXSA9ICJsYXllclRyZWVBZ2VudEVuYWJs
ZWQiOworfTsKKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0
YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JMYXllclRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRl
KQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kKDApCisgICAg
LCBtX2VuYWJsZWQoZmFsc2UpCit7CisgICAgCit9CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50
Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQoreworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sK
KyAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQtPmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0g
MDsKKyAgICBkaXNhYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpy
ZXN0b3JlKCkKK3sKKyAgICBlbmFibGUoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OnJlc2V0KCkKK3sKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7Cisg
ICAgbV9pZFRvTGF5ZXIuY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihM
YXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQpKQorICAgICAgICByZXR1
cm47CisgICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVy
VHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KHRoaXMpOwor
fQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikK
K3sKKyAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9
IGZhbHNlOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5
ZXJUcmVlQWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50
cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCit7CisgICAgbV9mcm9udGVuZC0+bGF5
ZXJUcmVlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJl
bmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAg
ICB1bmJpbmQocmVuZGVyTGF5ZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6TGF5ZXI+JiBvYmplY3QpCit7CisgICAgb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSb290TGF5
ZXIoKTsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKCkKK3sKKyAgICBy
ZXR1cm4gYnVpbGRPYmplY3RGb3JMYXllcihtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5j
b250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5yb290UmVuZGVyTGF5ZXIoKSk7Cit9CisK
K1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVyKiByZW5kZXJMYXllcikK
K3sKKyAgICBib29sIGlzQ29tcG9zaXRlZCA9IHJlbmRlckxheWVyLT5pc0NvbXBvc2l0ZWQoKTsK
KworICAgIC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikp
CisgICAgICAgIC5zZXRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QocmVuZGVyTGF5ZXItPmxvY2FsQm91bmRpbmdCb3goKSkpKQorICAgICAgICAuc2V0SXNDb21w
b3NpdGVkKGlzQ29tcG9zaXRlZCk7CisKKyAgICAvLyBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBj
b21wb3NpdGVkIGxheWVycyBvbmx5LgorICAgIGlmIChpc0NvbXBvc2l0ZWQpIHsKKyAgICAgICAg
UmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKKyAg
ICAgICAgbGF5ZXJPYmplY3QtPnNldE1lbW9yeShiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlF
c3RpbWF0ZSgpKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldENvbXBvc2l0ZWRCb3VuZHMoYnVp
bGRPYmplY3RGb3JJbnRSZWN0KGJhY2tpbmctPmNvbXBvc2l0ZWRCb3VuZHMoKSkpOworICAgIH0K
KworICAgIC8vIFByb2Nlc3MgY2hpbGRyZW4gbGF5ZXJzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+ID4gY2hpbGRyZW5BcnJheSA9
IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0
ZSgpOworCisgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOworCisg
ICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHJlZmxlY3Rpb24gbGF5ZXIuCisgICAgaWYgKHJlbmRl
ckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkKKyAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRl
bShidWlsZE9iamVjdEZvckxheWVyKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkpOwor
CisgICAgaWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlm
IChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5uZWda
T3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxp
c3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkKKyAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yTGF5ZXIobmVnWk9yZGVyTGlzdC0+YXQoaSkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSByZW5kZXJMYXllci0+
bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93
TGlzdC0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyAr
K2kpCisgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5
ZXIobm9ybWFsRmxvd0xpc3QtPmF0KGkpKSk7CisgICAgfQorICAgIAorICAgIGlmIChyZW5kZXJM
YXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxh
eWVyKj4qIHBvc1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7Cisg
ICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAg
ICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHBvc1pPcmRl
ckxpc3QtPmF0KGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsYXllck9iamVjdC0+c2V0
Q2hpbGRMYXllcnMoY2hpbGRyZW5BcnJheSk7CisgICAgCisgICAgcmV0dXJuIGxheWVyT2JqZWN0
OworfQorCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKK3sKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3Jl
YXRlKCkKKyAgICAgICAgLnNldFgocmVjdC54KCkpCisgICAgICAgIC5zZXRZKHJlY3QueSgpKQor
ICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0aCgpKQorICAgICAgICAuc2V0SGVpZ2h0KHJlY3Qu
aGVpZ2h0KCkpLnJlbGVhc2UoKTsKK30KKworU3RyaW5nIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBpZiAoIWxheWVyKQorICAg
ICAgICByZXR1cm4gIiI7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtX2RvY3VtZW50TGF5ZXJU
b0lkTWFwLmdldChsYXllcik7CisgICAgaWYgKGlkZW50aWZpZXIuaXNOdWxsKCkpIHsKKyAgICAg
ICAgaWRlbnRpZmllciA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOwor
ICAgICAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnNldChsYXllciwgaWRlbnRpZmllcik7Cisg
ICAgICAgIG1faWRUb0xheWVyLnNldChpZGVudGlmaWVyLCBsYXllcik7CisgICAgfQorICAgIHJl
dHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp1bmJp
bmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIFN0cmluZyBpZGVudGlmaWVyID0g
bV9kb2N1bWVudExheWVyVG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlmIChpZGVudGlmaWVyLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnJl
bW92ZShsYXllcik7CisgICAgbV9pZFRvTGF5ZXIucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2RlSWRGb3JMYXllcklkKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBsYXllcklkLCBpbnQqIHJlc3VsdE5vZGVJZCkKK3sKKyAgICAvLyBP
YnRhaW4gdGhlIFJlbmRlckxheWVyIGZyb20gdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQuCisgICAg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQp
OworICAgIC8vIEdldCB0aGUgbm9kZSBpZCBmcm9tIHRoZSBET00gYWdlbnQgYW5kIHJldHVybiBp
dCB0byB0aGUgZnJvbnQtZW5kLgorICAgIEluc3BlY3RvckRPTUFnZW50KiBpbnNwZWN0b3JET01B
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICAq
cmVzdWx0Tm9kZUlkID0gaW5zcGVjdG9yRE9NQWdlbnQtPnB1c2hOb2RlUGF0aEZvclJlbmRlckxh
eWVyVG9Gcm9udGVuZChyZW5kZXJMYXllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmE1ZjIxOWFhZDZlNGJhNTIyY2UxMmU3NDY0
MDE1YjdhMmRkODRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvckxheWVyVHJlZUFnZW50X2gK
KworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclR5
cGVCdWlsZGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEluc3BlY3RvclN0YXRlOworY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50
czsKK2NsYXNzIFBhZ2U7CisKK3R5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOworCitjbGFzcyBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Okxh
eWVyVHJlZUNvbW1hbmRIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoaW5z
dHJ1bWVudGluZ0FnZW50cywgc3RhdGUsIHBhZ2UpKTsKKyAgICB9CisgICAgfkluc3BlY3Rvckxh
eWVyVHJlZUFnZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9y
RnJvbnRlbmQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1
YWwgdm9pZCByZXN0b3JlKCk7CisgICAgdm9pZCByZXNldCgpOworCisgICAgdm9pZCBsYXllclRy
ZWVEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFJlbmRl
ckxheWVyKik7CisKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgorICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShF
cnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+Jik7CisgICAgdmlydHVhbCB2
b2lkIG5vZGVJZEZvckxheWVySWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVySWQs
IGludCogcmVzdWx0Tm9kZUlkKTsKKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKik7CisKKyAg
ICAvLyBSZW5kZXJMYXllci1yZWxhdGVkIG1ldGhvZHMuCisgICAgU3RyaW5nIGJpbmQoY29uc3Qg
UmVuZGVyTGF5ZXIqKTsKKyAgICB2b2lkIHVuYmluZChjb25zdCBSZW5kZXJMYXllciopOworCisg
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RG
b3JSb290TGF5ZXIoKTsgICAKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkxheWVyPiBidWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVyKik7CisgICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3Qo
Y29uc3QgSW50UmVjdCYpOworICAgICAgICAKKyAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7Cisg
ICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkxheWVyVHJlZSogbV9mcm9udGVuZDsKKyAgICBib29sIG1f
ZW5hYmxlZDsKKworICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBTdHJpbmc+IG1fZG9j
dW1lbnRMYXllclRvSWRNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIGNvbnN0IFJlbmRlckxheWVy
Kj4gbV9pZFRvTGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVt
ZW50aW5nQWdlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0Fn
ZW50cy5oCmluZGV4IDg4NGQ5YmIxMTZmOTQzMTNjMmIyODdiZWI3OGVlOWQ3MmUxN2I0NWYuLjdl
MjcwOWY3MmVjOGM3ZmViMzMxNzBiM2VlMDIzODVhMWVjNmE4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaApAQCAtNDcsNiArNDcsNyBAQCBj
bGFzcyBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudDsKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50OwogY2xhc3MgSW5zcGVj
dG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ7CkBAIC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBt
X2luc3BlY3RvckFnZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JQYWdlQWdlbnQoMCkKICAg
ICAgICAgLCBtX2luc3BlY3RvckNTU0FnZW50KDApCisgICAgICAgICwgbV9pbnNwZWN0b3JMYXll
clRyZWVBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ29uc29sZUFnZW50KDApCiAgICAg
ICAgICwgbV9pbnNwZWN0b3JET01BZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgwKQpAQCAtMTUzLDEwICsxNTUsMTggQEAgcHVibGljOgogICAgIEluc3BlY3RvckNh
bnZhc0FnZW50KiBpbnNwZWN0b3JDYW52YXNBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVj
dG9yQ2FudmFzQWdlbnQ7IH0KICAgICB2b2lkIHNldEluc3BlY3RvckNhbnZhc0FnZW50KEluc3Bl
Y3RvckNhbnZhc0FnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckNhbnZhc0FnZW50ID0gYWdlbnQ7
IH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudCogaW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
c3BlY3RvckxheWVyVHJlZUFnZW50OyB9CisgICAgdm9pZCBzZXRJbnNwZWN0b3JMYXllclRyZWVB
Z2VudChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCA9IGFnZW50OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBZ2Vu
dCogbV9pbnNwZWN0b3JBZ2VudDsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1faW5zcGVjdG9y
UGFnZUFnZW50OwogICAgIEluc3BlY3RvckNTU0FnZW50KiBtX2luc3BlY3RvckNTU0FnZW50Owor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudCogbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudDsKKyNlbmRpZgogICAgIEluc3BlY3RvckNv
bnNvbGVBZ2VudCogbV9pbnNwZWN0b3JDb25zb2xlQWdlbnQ7CiAgICAgSW5zcGVjdG9yRE9NQWdl
bnQqIG1faW5zcGVjdG9yRE9NQWdlbnQ7CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogbV9p
bnNwZWN0b3JSZXNvdXJjZUFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4NzBiZjFkZGZhNzM5NTljMGVlMGEyY2Mx
OGU5ZWZhODg1OWNmMjFjLi5mODE0NTUyMmU5ZWNkOTQ4NzAyZDliZmRjN2VlZmY5ZjVmYjdmMDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckFwcGxldC5oIgpAQCAtNTA4LDYg
KzUwOSwxOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdM
YXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogCiAgICAgaWYgKCFoYXNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKCkpCiAgICAgICAgIGVuYWJsZUNvbXBvc2l0aW5nTW9kZShmYWxzZSk7
CisKKyAgICAvLyBJbmZvcm0gdGhlIGluc3BlY3RvciB0aGF0IHRoZSBsYXllciB0cmVlIGhhcyBj
aGFuZ2VkLgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdl
KHRoaXMtPnBhZ2UoKSk7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckJl
Y2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAg
IC8vIEluZm9ybSB0aGUgaW5zcGVjdG9yIHRoYXQgdGhlIGdpdmVuIFJlbmRlckxheWVyIHdhcyBk
ZXN0cm95ZWQuCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ry
b3llZCh0aGlzLT5wYWdlKCksIHJlbmRlckxheWVyKTsKKworICAgIEFTU0VSVChtX2NvbXBvc2l0
ZWRMYXllckNvdW50ID4gMCk7CisgICAgLS1tX2NvbXBvc2l0ZWRMYXllckNvdW50OwogfQogCiAj
aWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5oCmluZGV4IDRkODI4ZjFhNWYxZjEwMGJmMjQwYmMzMTRiMDM3M2FkYWJi
YjU2ZjcuLmMxMmVkZDhmM2IzZTRmMTI1YzU1YjcyYWEzZGE4OTMzNGQwMmExOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE3
MCwxMSArMTcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJCYWNraW5nRm9yQWxsTGF5ZXJz
KCk7CiAgICAgCiAgICAgdm9pZCBsYXllckJlY2FtZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5
ZXIqKSB7ICsrbV9jb21wb3NpdGVkTGF5ZXJDb3VudDsgfQotICAgIHZvaWQgbGF5ZXJCZWNhbWVO
b25Db21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKikKLSAgICB7Ci0gICAgICAgIEFTU0VSVCht
X2NvbXBvc2l0ZWRMYXllckNvdW50ID4gMCk7Ci0gICAgICAgIC0tbV9jb21wb3NpdGVkTGF5ZXJD
b3VudDsKLSAgICB9CisgICAgdm9pZCBsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVu
ZGVyTGF5ZXIqKTsKICAgICAKICNpZiBFTkFCTEUoVklERU8pCiAgICAgLy8gVXNlIGJ5IFJlbmRl
clZpZGVvIHRvIGFzayBpZiBpdCBzaG91bGQgdHJ5IHRvIHVzZSBhY2NlbGVyYXRlZCBjb21wb3Np
dGluZy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177107</attachid>
            <date>2012-12-01 08:29:00 -0800</date>
            <delta_ts>2012-12-02 12:32:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121201172628.patch</filename>
            <type>text/plain</type>
            <size>57677</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1OTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzk2MmE1YmQ4ZTE4Mzhk
OWM1OWYxMmYzM2I1YTQwOTQ4YjI1YjgyOS4uYmUzNGZiNmUxZjYxMmJmMzQ3YTk2YjgxOWM2NmVl
ZmM2NDVjMWZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTEyLTAxICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2Ugd2l0aCBXZWJDb3JlIHRvIGFjY2VzcworICAgICAgICBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFja2VkIGJ5Cisg
ICAgICAgIHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
IGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVBZ2VudCB3aGlj
aCB3aWxsCisgICAgICAgIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIGNoYW5nZXMgdG8gdGhlIHJl
bmRlciBsYXllciB0cmVlIHZpYSBhIG5ldyBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnQsIHByb3Zp
ZGluZyBhbiBvYmplY3QKKyAgICAgICAgY29udGFpbmluZyB0aGUgZW50aXJlIGhpZXJhcmNoeSBv
ZiBSZW5kZXJMYXllcnMgZm9yIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuIFRoaXMgaGllcmFyY2h5
IGNhbiBiZSBxdWVyaWVkIGF0IGFueQorICAgICAgICB0aW1lIHVzaW5nIHRoZSAuZ2V0TGF5ZXJU
cmVlKCkgbWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudC4gRmluYWxseSwgdGhlIExheWVyVHJl
ZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXllcklkKCkKKyAgICAgICAgbWV0aG9k
IGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBS
ZW5kZXJMYXllciB3aXRoIHRoZSBwcm92aWRlZCBsYXllciBpZC4KKyAgICAgICAgCisgICAgICAg
IEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFzIGJl
ZW4gY2hhbmdlZCBzdWNoIHRoYXQgaW4gaXRzIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKKyAg
ICAgICAgbWV0aG9kIHdlIGNhbGwgdGhlIGxheWVyVHJlZURpZENoYW5nZSBtZXRob2Qgb24gdGhl
IEluc3BlY3RvckxheWVyVHJlZUFnZW50IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVl
Lmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjogRGVmaW5lIG5ldyB0eXBlcyBJbnRSZWN0ICh4LCB5LCB3aWR0aCwgaGVpZ2h0
KSBhbmQgTGF5ZXIsIHdoaWNoIGhvbGRzIHRoZSBpbmZvcm1hdGlvbiBmb3IgYQorICAgICAgICBS
ZW5kZXJMYXllciAobGF5ZXJJZCwgYm91bmRzLCBpc0NvbXBvc2l0ZWQsIG1lbW9yeSwgY29tcG9z
aXRlZEJvdW5kcykgYW5kIGl0cyBjaGlsZHJlbiAoY2hpbGRMYXllcnMpLiBXZSBhbHNvIGRlZmlu
ZSB0aGUKKyAgICAgICAgbWV0aG9kcyBvZiB0aGUgTGF5ZXJUcmVlQWdlbnQgb2JqZWN0IChlbmFi
bGUsIGRpc2FibGUsIGdldExheWVyVHJlZSwgbm9kZUlkRm9yTGF5ZXJJZCkgYW5kIHRoZSBsYXll
clRyZWVEaWRDaGFuZ2UgZXZlbnQgaXQgIAorICAgICAgICBmaXJlcy4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQ
YXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKTogTmV3IG1ldGhvZCBmYWNpbGl0YXRpbmcgcHVz
aGluZyB0aGUgbm9kZSBhc3NvY2lhdGVkIHdpdGggCisgICAgICAgIGEgZ2l2ZW4gUmVuZGVyTGF5
ZXIgdG8gdGhlIGZyb250LWVuZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3ll
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZUFnZW50U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKTog
QnVpbGQgdGhlIGVudGlyZSBoaWVyYXJjaHkgb2YgUmVuZGVyTGF5ZXJzIGZyb20gdGhlIHByb3Zp
ZGVkIAorICAgICAgICBSZW5kZXJMYXllci4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6bm9kZUlkRm9yTGF5ZXJJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0
cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKEluc3RydW1l
bnRpbmdBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6aW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0Fn
ZW50czo6c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6IENhbGwgdGhlIGxheWVyVHJlZURp
ZENoYW5nZSBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50IHZpYSB0aGUgCisgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbiB0byBpbmZvcm0gdGhlIGZyb250LWVuZCB0aGF0IHRoZSBS
ZW5kZXJMYXllciBoaWVyYXJjaHkgaGFzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25Db21w
b3NpdGVkKTogQ2FsbCB0aGUgcmVuZGVyTGF5ZXJEZXN0cm95ZWQgbWV0aG9kIG9uIHRoZSBMYXll
clRyZWVBZ2VudCB2aWEgCisgICAgICAgIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gdG8g
dW5iaW5kIHRoZSBsYXllciB0aGF0IGlzIGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIChSZW5kZXJMYXllckNvbXBv
c2l0b3IpOgorCiAyMDEyLTExLTI4ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIFtUZXhtYXBdIFJFR1JFU1NJT04ocjEzNTYyMCkgUXRUZXN0QnJv
d3NlciBjcmFzaGVzIG9uIEdvb2dsZS1ncmF2aXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAz
YTVkMjE3MzU4NDVmMGJkOGE1NDczYmE2ZmIwZDA5ZDBmZjUxMmIyLi43M2IzMTUzNDBjZjJlMGQ5
NDVlMzcxNTU3ZWY1NmNkYmQ0MWU3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU5NSw2
ICsxNTk1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JI
aXN0b3J5LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBkY2NiZjdiZWQyYmNlZDE5MjAyMDc4ZWE0NjEyMTQ3OTgyNGVkN2FiLi5jNzY5ODdj
NDc4ODY4N2U3MTliMzIxNGY3YjI0NTRhZjVhNTdkODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTM3MzMsNiArMzczMyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCisJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBcCisJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYzU3ZDU4
YjIwY2M1ZjVlNzJlYzg5NTFhYjYxNjJiMzE3MGFmZmE1ZS4uMDRjNzRjZTI2MWQ3NmIyOTRjNjBl
MGUxNzNmMDFmNWI3Y2ViMDc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC03NzAsNiArNzcwLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgXAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAgXApAQCAtMTkxNSw2ICsxOTE2LDcgQEAgSEVBREVSUyArPSBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgg
XAorICAgIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAwNmY5MTIwMjFkNGZjM2JlY2I4NDVhM2EyMjYyZmYyNTNlMTBhM2QyLi5iMTQ1YWRl
ODk5OTcwNGJhZDhiYzY2ODVlODBlMjU3MGFiM2Y1ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0y
ODgwLDYgKzI4ODAsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDExZDNhMjIzMzBmYjgxYTdjMGFiYzJhYTYzMTAx
YTAxZmY5YWFiMjQuLjdmOWU2NTg4NDAwZWQ4OTg1MTJmMTNjOGRjOWFmNTIxZmNhZDZiMmQgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NTMz
OCw2ICs3NTMzOCwzMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCIKIAkJCQk+
CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjJkNTc1NmNjNWE2MDA1ZDRkZjljZWU3NTFm
YTlkODJkNmFmZmVjYy4uN2MxMzc2OTU4M2ViMjdhNWI0NzZkNGM3MjM2Yjc3MGMxYjk1MDY5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTkxMCw2ICsxOTEwLDggQEAKIAkJNzE5MDRERUExNTZBNjMzQTAwMUUxQkE1IC8qIERP
TVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxODUxMjMzMTU2ODY0OTgwMEM0MDk2NyAvKiBE
T01TVkdWaWV3U3BlY0ludGVybmFsLmggKi87IH07CiAJCTcxQTU3REYxMTU0QkUyNUMwMDA5RDEy
MCAvKiBTVkdQYXRoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxQTU3REVGMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0
aWVzLmNwcCAqLzsgfTsKIAkJNzFBNTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
QTU3REYwMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmggKi87IH07CisJCTcx
QjFFMTI1MTY0MDQ4RjcwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFCMUUxMjQxNjQwNDhD
QzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmggKi87IH07CisJCTcxQjFFMTI2
MTY0MDQ5MUEwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIxRTEyMzE2NDA0OENDMDBC
MTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovOyB9OwogCQk3MUNDN0EyMDE1
MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUNDN0ExRjE1MkEwQkZFMDA5RUVB
RjkgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAgKi87IH07CiAJCTcxRENCNzAxMTU2ODE5
NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFEQ0I2RkYxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZH
Wm9vbUFuZFBhbi5jcHAgKi87IH07CiAJCTcxRENCNzAyMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NW
R1pvb21BbmRQYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcxRENCNzAwMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uaCAqLzsgfTsK
QEAgLTkxODYsNiArOTE4OCw4IEBACiAJCTcxODUxMjMzMTU2ODY0OTgwMEM0MDk2NyAvKiBET01T
VkdWaWV3U3BlY0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNWR1ZpZXdTcGVjSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNTdERUYxNTRCRTI1QzAwMDlE
MTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcxQTU3REYwMTU0QkUyNUMwMDA5RDEyMCAvKiBTVkdQYXRoVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1BhdGhVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzFCMUUxMjMxNjQwNDhDQzAwQjE4ODBBIC8qIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzFCMUUxMjQxNjQwNDhDQzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckxheWVyVHJlZUFnZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFG
OSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MURDQjZGRjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHWm9vbUFuZFBh
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRENCNzAwMTU2ODE5NzYwMDg2
MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTVkdab29tQW5kUGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDgx
MCw2ICsxNDgxNCw4IEBACiAJCQkJQUE3MzE4M0MxNTkyNTVCOTAwQTkzRTZFIC8qIEluamVjdGVk
U2NyaXB0Q2FudmFzTW9kdWxlLmNwcCAqLywKIAkJCQlBQTczMTgzRDE1OTI1NUI5MDBBOTNFNkUg
LyogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuaCAqLywKIAkJCQlBQTkwMzBGRTE1N0UxNkEw
MDAyNzYyNDcgLyogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMgKi8sCisJCQkJ
NzFCMUUxMjMxNjQwNDhDQzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCAq
LywKKwkJCQk3MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuaCAqLywKIAkJCQk3QTBFNzZGNjEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcCAqLywKIAkJCQk3QTBFNzZGNzEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggKi8sCiAJCQkJN0EwRTc2RjgxMEJGMDhFRDAwQTAyNzZFIC8qIEluamVjdGVkU2Ny
aXB0SG9zdC5pZGwgKi8sCkBAIC0yMzMxNiw2ICsyMzMyMiw3IEBACiAJCQkJODUwMkFCNTQwQUQ0
MzhDMDAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY0dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTAyQUI5ODBBRDQzOTRFMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jR0VsZW1lbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFCNTYwQUQ0MzhDMDAwMzc4NTQwIC8qIERPTVNW
R0ZFRnVuY1JFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MUIxRTEyNTE2NDA0OEY3MDBC
MTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1
MDJBQjk5MEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNSRWxlbWVudEludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTAyQUI1ODBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAyQUI5QTBBRDQzOTRF
MDAzNzg1NDAgLyogRE9NU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjYxNzQsNiArMjYxODEsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJNzFCMUUxMjYxNjQwNDkxQTAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2OURBMTUwNUYwNzYwMDFCNzRBQyAvKiBBYnN0cmFj
dERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRTFCMUQwMEZGNTk4NjkwMDU3NkIz
QiAvKiBBYnN0cmFjdFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI5QzE2RTEzMDBD
MkUyMDAyRDc5NEUgLyogQWNjZXNzaWJpbGl0eUFsbEluT25lLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDYzNWZhOTQxNTA1YjE4
M2JlZGNjZWM4Njc4NTk0NDEyYzZlYWIyYzMuLmJiNGUzZDI2NWYyNjExMzE5YTY2NmU2NWVhZWQy
NTA1ZDJjZDM1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAg
LTMyNDEsNSArMzI0MSw3MiBAQAogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAi
ZXZlbnRzIjogW10KKyAgICB9LAorICAgIHsKKyAgICAgICAgImRvbWFpbiI6ICJMYXllclRyZWUi
LAorICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgInR5cGVzIjogWworICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJMYXllcklkIiwKKyAgICAgICAgICAgICAgICAi
dHlwZSI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUg
UmVuZGVyTGF5ZXIgaWRlbnRpZmllci4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJpZCI6ICJJbnRSZWN0IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHJlY3RhbmdsZS4i
LAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIngiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSB4IHBv
c2l0aW9uLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ5IiwgInR5cGUiOiAi
aW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgeSBwb3NpdGlvbi4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAid2lkdGgiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0
aW9uIjogIlRoZSB3aWR0aCBtZXRyaWMuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImhlaWdodCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhlaWdo
dCBtZXRyaWMuIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiTGF5ZXIiLAorICAgICAgICAgICAgICAgICJ0
eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0
aW9uIGFib3V0IGEgY29tcG9zaXRpbmcgbGF5ZXIuIiwKKyAgICAgICAgICAgICAgICAicHJvcGVy
dGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllcklkIiwgIiRyZWYi
OiAiTGF5ZXJJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgdW5pcXVlIGlkIGZvciB0aGlzIGxheWVy
LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3VuZHMiLCAiJHJlZiI6ICJJ
bnRSZWN0IiwgImRlc2NyaXB0aW9uIjogIkJvdW5kcyBvZiB0aGUgbGF5ZXIuIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImlzQ29tcG9zaXRlZCIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBsYXllciBpcyBjb21wb3Np
dGVkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtZW1vcnkiLCAidHlwZSI6
ICJpbnRlZ2VyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkVzdGltYXRlZCBt
ZW1vcnkgdXNlZCBieSB0aGlzIGxheWVyLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJjb21wb3NpdGVkQm91bmRzIiwgIiRyZWYiOiAiSW50UmVjdCIsICJvcHRpb25hbCI6IHRy
dWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgYm91bmRzIG9mIHRoZSBjb21wb3NpdGVkIGxheWVyLiIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjaGlsZExheWVycyIsICJ0eXBlIjog
ImFycmF5IiwgIm9wdGlvbmFsIjogdHJ1ZSwgIml0ZW1zIjogeyAiJHJlZiI6ICJMYXllciIgfSwg
ImRlc2NyaXB0aW9uIjogIkNoaWxkIGxheWVycy4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgICJjb21tYW5kcyI6IFsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLAorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJFbmFibGVzIGNvbXBvc2l0aW5nIHRyZWUgaW5zcGVjdGlvbi4iCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImRpc2Fi
bGUiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBjb21wb3NpdGlu
ZyB0cmVlIGluc3BlY3Rpb24uIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJnZXRMYXllclRyZWUiLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBsYXllciB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVu
dCBwYWdlLiIsCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibGF5ZXJUcmVlIiwgIiRyZWYiOiAiTGF5ZXIiLCAiZGVzY3JpcHRpb24i
OiAiTGF5ZXIgdHJlZSBzdHJ1Y3R1cmUgb2YgdGhlIGN1cnJlbnQgcGFnZS4iIH0KKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogIm5vZGVJZEZvckxheWVySWQiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJSZXR1cm5zIHRoZSBub2RlIGlkIGZvciBhIGdpdmVuIGxheWVyIGlkLiIsCisgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bGF5ZXJJZCIsICIkcmVmIjogIkxheWVySWQiIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5v
ZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5vZGUgaWQg
Zm9yIHRoZSBnaXZlbiBsYXllciBpZC4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAg
ICB9CisgICAgICAgIF0sCisgICAgICAgICJldmVudHMiOiBbCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAibGF5ZXJUcmVlRGlkQ2hhbmdlIgorICAgICAgICAgICAgfQor
ICAgICAgICBdCiAgICAgfV0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWxsSW5PbmUuY3BwCmluZGV4IGQxOWFkMmUwYTAyM2I5OWE4NjQ0NTY3YTMxNGY3NGExZGZm
NzA3MWYuLjAzMDFiMWNjYWRhNTI1M2YwZTlhYmU1ZThiMTg2OTYxZjgwYTkwZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcApAQCAtNTgsNiAr
NTgsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuY3BwIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIgorI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5j
cHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjYTkyYzRhZTIzNmQw
NWFlM2JmODQzZGY4ZGFlNzg4YTM2YTA0NzVlLi5lM2IwMjdhZjYxZDY1OTJkMmY1ODM3MjE1ZWFj
NTU3MWEwY2EzYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50Lmgi
CkBAIC0xNTEsNiArMTUyLDggQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJv
bGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckMKIAogICAgIG1fYWdl
bnRzLmFwcGVuZChJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIu
Z2V0KCkpKTsKIAorICAgIG1fYWdlbnRzLmFwcGVuZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgcGFnZSkp
OworCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0b3JDbGllbnQsIGluc3BlY3RvckNsaWVudCk7CiAg
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5pbml0KG1f
aW5zcGVjdG9yQWdlbnQKICAgICAgICAgLCBjb25zb2xlQWdlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDFiMDg5MzQ3MjFhMmZlZDM5
YzMyYmEyNDAwZTMwODA3ODY0ZDEzM2MuLmI1ZDRjZTc4ZWY1NjIwODgwZjEwMGVjZDA3M2JkZTNm
OTg3ZDU0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtNTYzLDYgKzU2MywxMSBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hO
b2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICByZXR1cm4gbWFwLT5nZXQo
bm9kZVRvUHVzaCk7CiB9CiAKK2ludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoRm9y
UmVuZGVyTGF5ZXJUb0Zyb250ZW5kKGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sK
KyAgICByZXR1cm4gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChyZW5kZXJMYXllci0+cmVuZGVyZXIo
KS0+bm9kZSgpKTsKK30KKwogaW50IEluc3BlY3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZChOb2Rl
KiBub2RlKQogewogICAgIHJldHVybiBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCAzYjcy
NjUyODMxYjExY2IxYzQzZmUxYjgxZGYyNjkwZGNhYmIzNDJkLi5kNzczNWRhMjljY2Q5NDk1Mjll
Y2FlN2Q4MWJlNjhjYWU5NjU0ZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckZy
b250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMTk5LDYgKzIwMCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gb3RoZXIgYWdlbnRzLgogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50KCkgeyByZXR1cm4gbV9wYWdlQWdlbnQ7IH0KKyAgICBpbnQg
cHVzaE5vZGVQYXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKGNvbnN0IFJlbmRlckxheWVyKik7
CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyos
IEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAyYWNkNjJiNTQ0MzZmZWVm
N2Q3ODIzYmUzNzE0NTJmZDI4MTg2NDE4Li41YzVlMWM5NmY1MGRjMTA0OTJiMzJiMzdjZWRiMDI4
NGQ3ZTA4NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNl
QWdlbnQuaCIKQEAgLTkxMiw3ICs5MTMsMTAgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENvbW1pdExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnQKICAg
ICAgICAgICAgIGRvbVN0b3JhZ2VBZ2VudC0+Y2xlYXJSZXNvdXJjZXMoKTsKICAgICAgICAgaWYg
KEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRPTUFnZW50KCkpCiAgICAgICAgICAgICBkb21BZ2VudC0+c2V0RG9jdW1lbnQobWFpbkZy
YW1lLT5kb2N1bWVudCgpKTsKLQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAg
ICAgICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCisgICAgICAgICAgICBs
YXllclRyZWVBZ2VudC0+cmVzZXQoKTsKKyNlbmRpZgogICAgICAgICBpbnNwZWN0b3JBZ2VudC0+
ZGlkQ29tbWl0TG9hZCgpOwogICAgIH0KICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKQEAgLTEz
MDAsNiArMTMwNCwyMCBAQCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6b3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbkltcGwoSQogICAgIHJldHVybiBkZXZp
Y2VPcmllbnRhdGlvbjsKIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKK3Zv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2VJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCit7CisgICAgaWYgKEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvckxheWVyVHJlZUFnZW50KCkpCisgICAgICAgIGxheWVyVHJlZUFnZW50LT5sYXllclRy
ZWVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRl
ckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCit7CisgICAgaWYgKEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvckxheWVyVHJlZUFnZW50KCkpCisgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZW5kZXJM
YXllckRlc3Ryb3llZChyZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gIUVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOTYzNDU4
ZDRkNTM1OWEyYmU1NmI3MmYwY2VlOTA2YTIxM2I2MWNhYy4uMDNiMTVlOWViNTNjMTc0OTFiNzlk
YzMyM2RlNDA0NGJkNGQ4MWE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKIGNsYXNzIEtV
Ukw7CiBjbGFzcyBOb2RlOworY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtMjgw
LDYgKzI4MSwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRGV2aWNlT3JpZW50YXRpb25EYXRh
KiBvdmVycmlkZURldmljZU9yaWVudGF0aW9uKFBhZ2UqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEq
KTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBs
YXllclRyZWVEaWRDaGFuZ2UoUGFnZSopOworICAgIHN0YXRpYyB2b2lkIHJlbmRlckxheWVyRGVz
dHJveWVkKFBhZ2UqLCBjb25zdCBSZW5kZXJMYXllciopOworI2VuZGlmCisKIHByaXZhdGU6CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBzdGF0aWMgdm9pZCBkaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSosIERPTVdyYXBwZXJXb3Js
ZCopOwpAQCAtNDU5LDYgKzQ2NSwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBzdGF0aWMg
RGV2aWNlT3JpZW50YXRpb25EYXRhKiBvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgRGV2aWNlT3JpZW50YXRpb25EYXRhKik7CisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgc3RhdGljIHZvaWQgbGF5ZXJUcmVlRGlkQ2hhbmdl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJE
ZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBSZW5kZXJMYXllciopOwor
I2VuZGlmCisKICAgICBzdGF0aWMgaW50IHNfZnJvbnRlbmRDb3VudGVyOwogI2VuZGlmCiB9OwpA
QCAtMTU0Miw2ICsxNTU0LDIwIEBAIGlubGluZSBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6b3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvCiAgICAgcmV0dXJu
IGRldmljZU9yaWVudGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFu
Z2UoUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpKQorICAgICAgICBs
YXllclRyZWVEaWRDaGFuZ2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMpOworfQorCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKFBhZ2Uq
IHBhZ2UsIGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JQYWdlKHBhZ2UpKQorICAgICAgICByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgcmVuZGVyTGF5ZXIpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb2xsZWN0aW5nSFRN
TFBhcnNlRXJyb3JzKFBhZ2UqIHBhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjMzYzk4MTQ4
ZmM4ZWY1Y2ZkMWU1M2ExOTBlMTliZDcwYTcyNmUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtMCwwICsx
LDIzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5oIgorCisjaW5jbHVkZSAiSWRlbnRpZmllcnNGYWN0b3J5LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5o
IgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKKyNpbmNsdWRlICJS
ZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIExheWVyVHJlZUFnZW50U3RhdGUgeworc3RhdGlj
IGNvbnN0IGNoYXIgbGF5ZXJUcmVlQWdlbnRFbmFibGVkW10gPSAibGF5ZXJUcmVlQWdlbnRFbmFi
bGVkIjsKK307CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JT
dGF0ZSogc3RhdGUsIFBhZ2UqIHBhZ2UpCisgICAgOiBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ+KCJMYXllclRyZWUiLCBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0
ZSkKKyAgICAsIG1faW5zcGVjdGVkUGFnZShwYWdlKQorICAgICwgbV9mcm9udGVuZCgwKQorICAg
ICwgbV9lbmFibGVkKGZhbHNlKQoreworICAgIAorfQorCitJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6fkluc3BlY3RvckxheWVyVHJlZUFnZW50KCkKK3sKKyAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KDApOworfQorCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCit7
CisgICAgbV9mcm9udGVuZCA9IGZyb250ZW5kLT5sYXllcnRyZWUoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit7CisgICAgbV9mcm9udGVuZCA9
IDA7CisgICAgZGlzYWJsZSgwKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
cmVzdG9yZSgpCit7CisgICAgZW5hYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpyZXNldCgpCit7CisgICAgbV9kb2N1bWVudExheWVyVG9JZE1hcC5jbGVhcigpOwor
ICAgIG1faWRUb0xheWVyLmNsZWFyKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4o
TGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5ZXJUcmVlQWdlbnRFbmFibGVkKSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihMYXll
clRyZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQsIG1fZW5hYmxlZCk7CisgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsK
K30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyop
Cit7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2VuYWJsZWQg
PSBmYWxzZTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6Omxh
eWVyVHJlZUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KDApOworfQorCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpsYXllclRyZWVEaWRDaGFuZ2UoKQoreworICAgIG1fZnJvbnRlbmQtPmxh
eWVyVHJlZURpZENoYW5nZSgpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpy
ZW5kZXJMYXllckRlc3Ryb3llZChjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIpCit7Cisg
ICAgdW5iaW5kKHJlbmRlckxheWVyKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6Z2V0TGF5ZXJUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRy
ZWU6OkxheWVyPiYgb2JqZWN0KQoreworICAgIG9iamVjdCA9IGJ1aWxkT2JqZWN0Rm9yUm9vdExh
eWVyKCk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IElu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvclJvb3RMYXllcigpCit7CisgICAg
cmV0dXJuIGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+
Y29udGVudFJlbmRlcmVyKCktPmNvbXBvc2l0b3IoKS0+cm9vdFJlbmRlckxheWVyKCkpOworfQor
CitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcihSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIp
Cit7CisgICAgYm9vbCBpc0NvbXBvc2l0ZWQgPSByZW5kZXJMYXllci0+aXNDb21wb3NpdGVkKCk7
CisKKyAgICAvLyBCYXNpYyBzZXQgb2YgcHJvcGVydGllcy4KKyAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGxheWVyT2JqZWN0ID0gVHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6TGF5ZXI6OmNyZWF0ZSgpCisgICAgICAgIC5zZXRMYXllcklkKGJpbmQocmVuZGVyTGF5ZXIp
KQorICAgICAgICAuc2V0Qm91bmRzKGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChlbmNsb3NpbmdJbnRS
ZWN0KHJlbmRlckxheWVyLT5sb2NhbEJvdW5kaW5nQm94KCkpKSkKKyAgICAgICAgLnNldElzQ29t
cG9zaXRlZChpc0NvbXBvc2l0ZWQpOworCisgICAgLy8gT3B0aW9uYWwgcHJvcGVydGllcyBmb3Ig
Y29tcG9zaXRlZCBsYXllcnMgb25seS4KKyAgICBpZiAoaXNDb21wb3NpdGVkKSB7CisgICAgICAg
IFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IHJlbmRlckxheWVyLT5iYWNraW5nKCk7Cisg
ICAgICAgIGxheWVyT2JqZWN0LT5zZXRNZW1vcnkoYmFja2luZy0+YmFja2luZ1N0b3JlTWVtb3J5
RXN0aW1hdGUoKSk7CisgICAgICAgIGxheWVyT2JqZWN0LT5zZXRDb21wb3NpdGVkQm91bmRzKGJ1
aWxkT2JqZWN0Rm9ySW50UmVjdChiYWNraW5nLT5jb21wb3NpdGVkQm91bmRzKCkpKTsKKyAgICB9
CisKKyAgICAvLyBQcm9jZXNzIGNoaWxkcmVuIGxheWVycy4KKyAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiA+IGNoaWxkcmVuQXJyYXkg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+OjpjcmVh
dGUoKTsKKworICAgIHJlbmRlckxheWVyLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKKwor
ICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgYSByZWZsZWN0aW9uIGxheWVyLgorICAgIGlmIChyZW5k
ZXJMYXllci0+cmVmbGVjdGlvbkxheWVyKCkpCisgICAgICAgIGNoaWxkcmVuQXJyYXktPmFkZEl0
ZW0oYnVpbGRPYmplY3RGb3JMYXllcihyZW5kZXJMYXllci0+cmVmbGVjdGlvbkxheWVyKCkpKTsK
KworICAgIGlmIChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBp
ZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+bmVn
Wk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWdaT3JkZXJM
aXN0LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXpl
OyArK2kpCisgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVj
dEZvckxheWVyKG5lZ1pPcmRlckxpc3QtPmF0KGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gcmVuZGVyTGF5ZXIt
Pm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxv
d0xpc3QtPnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsg
KytpKQorICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxh
eWVyKG5vcm1hbEZsb3dMaXN0LT5hdChpKSkpOworICAgIH0KKyAgICAKKyAgICBpZiAocmVuZGVy
TGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJM
YXllcio+KiBwb3NaT3JkZXJMaXN0ID0gcmVuZGVyTGF5ZXItPnBvc1pPcmRlckxpc3QoKSkgewor
ICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOworICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQorICAgICAgICAg
ICAgICAgIGNoaWxkcmVuQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JMYXllcihwb3NaT3Jk
ZXJMaXN0LT5hdChpKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgbGF5ZXJPYmplY3QtPnNl
dENoaWxkTGF5ZXJzKGNoaWxkcmVuQXJyYXkpOworICAgIAorICAgIHJldHVybiBsYXllck9iamVj
dDsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpJbnRSZWN0PiBJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgcmV0dXJuIFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q6OmNy
ZWF0ZSgpCisgICAgICAgIC5zZXRYKHJlY3QueCgpKQorICAgICAgICAuc2V0WShyZWN0LnkoKSkK
KyAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lkdGgoKSkKKyAgICAgICAgLnNldEhlaWdodChyZWN0
LmhlaWdodCgpKS5yZWxlYXNlKCk7Cit9CisKK1N0cmluZyBJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6YmluZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpCit7CisgICAgaWYgKCFsYXllcikKKyAg
ICAgICAgcmV0dXJuICIiOworICAgIFN0cmluZyBpZGVudGlmaWVyID0gbV9kb2N1bWVudExheWVy
VG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgpKSB7CisgICAg
ICAgIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsK
KyAgICAgICAgbV9kb2N1bWVudExheWVyVG9JZE1hcC5zZXQobGF5ZXIsIGlkZW50aWZpZXIpOwor
ICAgICAgICBtX2lkVG9MYXllci5zZXQoaWRlbnRpZmllciwgbGF5ZXIpOworICAgIH0KKyAgICBy
ZXR1cm4gaWRlbnRpZmllcjsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6dW5i
aW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBTdHJpbmcgaWRlbnRpZmllciA9
IG1fZG9jdW1lbnRMYXllclRvSWRNYXAuZ2V0KGxheWVyKTsKKyAgICBpZiAoaWRlbnRpZmllci5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kb2N1bWVudExheWVyVG9JZE1hcC5y
ZW1vdmUobGF5ZXIpOworICAgIG1faWRUb0xheWVyLnJlbW92ZShpZGVudGlmaWVyKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bm9kZUlkRm9yTGF5ZXJJZChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgaW50KiByZXN1bHROb2RlSWQp
Cit7CisgICAgLy8gT2J0YWluIHRoZSBSZW5kZXJMYXllciBmcm9tIHRoZSBpZGVudGlmaWVyIHBy
b3ZpZGVkLgorICAgIGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IG1faWRUb0xheWVy
LmdldChsYXllcklkKTsKKyAgICAKKyAgICAvLyBTZW5kIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5v
IHN1Y2ggcmVnaXN0ZXJlZCBsYXllciBpZC4KKyAgICBpZiAoIXJlbmRlckxheWVyKSB7CisgICAg
ICAgICplcnJvclN0cmluZyA9ICJDb3VsZCBub3QgZmluZCBhIGJvdW5kIGxheWVyIGZvciB0aGUg
cHJvdmlkZWQgaWQiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIEdldCB0
aGUgbm9kZSBpZCBmcm9tIHRoZSBET00gYWdlbnQgYW5kIHJldHVybiBpdCB0byB0aGUgZnJvbnQt
ZW5kLgorICAgIEluc3BlY3RvckRPTUFnZW50KiBpbnNwZWN0b3JET01BZ2VudCA9IG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICAqcmVzdWx0Tm9kZUlkID0g
aW5zcGVjdG9yRE9NQWdlbnQtPnB1c2hOb2RlUGF0aEZvclJlbmRlckxheWVyVG9Gcm9udGVuZChy
ZW5kZXJMYXllcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YmE1ZjIxOWFhZDZlNGJhNTIyY2UxMmU3NDY0MDE1YjdhMmRkODRkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVy
VHJlZUFnZW50LmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudF9oCisjZGVmaW5lIEluc3BlY3RvckxheWVyVHJlZUFnZW50X2gKKworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JCYXNlQWdlbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclR5cGVCdWlsZGVyLmgiCisj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEluc3BlY3RvclN0YXRlOworY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKK2NsYXNzIFBhZ2U7
CisKK3R5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOworCitjbGFzcyBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ+LCBwdWJsaWMgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkxheWVyVHJlZUNvbW1hbmRI
YW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50
cywgc3RhdGUsIHBhZ2UpKTsKKyAgICB9CisgICAgfkluc3BlY3RvckxheWVyVHJlZUFnZW50KCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZpcnR1YWwgdm9pZCByZXN0b3Jl
KCk7CisgICAgdm9pZCByZXNldCgpOworCisgICAgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2UoKTsK
KyAgICB2b2lkIHJlbmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKik7CisKKyAg
ICAvLyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgorICAgIHZpcnR1YWwgdm9pZCBlbmFibGUo
RXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+Jik7CisgICAgdmlydHVhbCB2b2lkIG5vZGVJZEZvckxh
eWVySWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIGludCogcmVzdWx0Tm9k
ZUlkKTsKKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBQYWdlKik7CisKKyAgICAvLyBSZW5kZXJMYXll
ci1yZWxhdGVkIG1ldGhvZHMuCisgICAgU3RyaW5nIGJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsK
KyAgICB2b2lkIHVuYmluZChjb25zdCBSZW5kZXJMYXllciopOworCisgICAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gYnVpbGRPYmplY3RGb3JSb290TGF5ZXIoKTsg
ICAKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9i
amVjdEZvckxheWVyKFJlbmRlckxheWVyKik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpJbnRSZWN0PiBidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYp
OworICAgICAgICAKKyAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CisgICAgSW5zcGVjdG9yRnJv
bnRlbmQ6OkxheWVyVHJlZSogbV9mcm9udGVuZDsKKyAgICBib29sIG1fZW5hYmxlZDsKKworICAg
IEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBTdHJpbmc+IG1fZG9jdW1lbnRMYXllclRvSWRN
YXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIGNvbnN0IFJlbmRlckxheWVyKj4gbV9pZFRvTGF5ZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4IDg4
NGQ5YmIxMTZmOTQzMTNjMmIyODdiZWI3OGVlOWQ3MmUxN2I0NWYuLjdlMjcwOWY3MmVjOGM3ZmVi
MzMxNzBiM2VlMDIzODVhMWVjNmE4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3RydW1lbnRpbmdBZ2VudHMuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OwogY2xhc3MgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDsKK2Ns
YXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50Owog
Y2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvclJlc291cmNlQWdl
bnQ7CkBAIC02NSw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2luc3BlY3RvckFnZW50
KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JQYWdlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3Bl
Y3RvckNTU0FnZW50KDApCisgICAgICAgICwgbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudCgwKQog
ICAgICAgICAsIG1faW5zcGVjdG9yQ29uc29sZUFnZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0
b3JET01BZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgwKQpAQCAt
MTUzLDEwICsxNTUsMTggQEAgcHVibGljOgogICAgIEluc3BlY3RvckNhbnZhc0FnZW50KiBpbnNw
ZWN0b3JDYW52YXNBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQ2FudmFzQWdlbnQ7
IH0KICAgICB2b2lkIHNldEluc3BlY3RvckNhbnZhc0FnZW50KEluc3BlY3RvckNhbnZhc0FnZW50
KiBhZ2VudCkgeyBtX2luc3BlY3RvckNhbnZhc0FnZW50ID0gYWdlbnQ7IH0KIAorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogaW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckxheWVyVHJl
ZUFnZW50OyB9CisgICAgdm9pZCBzZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudChJbnNwZWN0b3JM
YXllclRyZWVBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JMYXllclRyZWVBZ2VudCA9IGFnZW50
OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JB
Z2VudDsKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1faW5zcGVjdG9yUGFnZUFnZW50OwogICAg
IEluc3BlY3RvckNTU0FnZW50KiBtX2luc3BlY3RvckNTU0FnZW50OworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICBJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbV9pbnNwZWN0
b3JMYXllclRyZWVBZ2VudDsKKyNlbmRpZgogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudCogbV9p
bnNwZWN0b3JDb25zb2xlQWdlbnQ7CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1faW5zcGVjdG9y
RE9NQWdlbnQ7CiAgICAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogbV9pbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAppbmRleCA4NzBiZjFkZGZhNzM5NTljMGVlMGEyY2MxOGU5ZWZhODg1OWNmMjFj
Li5iYzFkNzEwMTkwYTI1NjVlMGU0ZmRjZDUzOTg5NWU3YzNlODgwNDc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlckFwcGxldC5oIgpAQCAtNTA4LDYgKzUwOSwxOCBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRp
bmdVcGRhdGVUeXBlIHVwZGF0ZQogCiAgICAgaWYgKCFoYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCkpCiAgICAgICAgIGVuYWJsZUNvbXBvc2l0aW5nTW9kZShmYWxzZSk7CisKKyAgICAvLyBJbmZv
cm0gdGhlIGluc3BlY3RvciB0aGF0IHRoZSBsYXllciB0cmVlIGhhcyBjaGFuZ2VkLgorICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKHBhZ2UoKSk7Cit9CisK
K3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29u
c3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIC8vIEluZm9ybSB0aGUgaW5zcGVj
dG9yIHRoYXQgdGhlIGdpdmVuIFJlbmRlckxheWVyIHdhcyBkZXN0cm95ZWQuCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChwYWdlKCksIHJlbmRlckxh
eWVyKTsKKworICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRMYXllckNvdW50ID4gMCk7CisgICAgLS1t
X2NvbXBvc2l0ZWRMYXllckNvdW50OwogfQogCiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IDRkODI4
ZjFhNWYxZjEwMGJmMjQwYmMzMTRiMDM3M2FkYWJiYjU2ZjcuLmMxMmVkZDhmM2IzZTRmMTI1YzU1
YjcyYWEzZGE4OTMzNGQwMmExOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE3MCwxMSArMTcwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJCYWNraW5nRm9yQWxsTGF5ZXJzKCk7CiAgICAgCiAgICAgdm9pZCBsYXllckJl
Y2FtZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKSB7ICsrbV9jb21wb3NpdGVkTGF5ZXJD
b3VudDsgfQotICAgIHZvaWQgbGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKGNvbnN0IFJlbmRlckxh
eWVyKikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2NvbXBvc2l0ZWRMYXllckNvdW50ID4gMCk7
Ci0gICAgICAgIC0tbV9jb21wb3NpdGVkTGF5ZXJDb3VudDsKLSAgICB9CisgICAgdm9pZCBsYXll
ckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKICAgICAKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgLy8gVXNlIGJ5IFJlbmRlclZpZGVvIHRvIGFzayBpZiBpdCBzaG91bGQg
dHJ5IHRvIHVzZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YmIxNDIwMWY5M2Ew
NWJiYWU3NDg2ZjBkMTk2ODYyZGFkZGUyMWRjLi5kN2UyYjM1YjFiMzZmYmUwNjZhYWUyZmIwNDky
MzFlYjVkNmY1N2Q1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTItMDEgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIHRoZSBiYWNrZW5k
IGZvciBleHBvc2luZyB0aGUgbGF5ZXIgdHJlZSB0byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNTEzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgTGF5b3V0
VGVzdCB0aGF0IGV4ZXJjaXNlcyB0aGUgdmFyaW91cyBBUElzIGFuZCBldmVudHMgZXhwb3NlZCBi
eSB0aGUgTGF5ZXJUcmVlQWdlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5
ZXItdHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2Nv
bC9sYXllci10cmVlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTI4ICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBiYXNpYyBpbXBsZW1lbnRhdGlv
biBmb3IgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3NDI2MjViODhiYTliOTAyMjY1ZjM5ZDNkMDUxNWQzYmJkMTI1NTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNjMgQEAKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BB
U1MKKworPT09IEVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFnZW50ID09PQorCitQQVNTCisKKz09PSBH
ZXQgdGhlIGluaXRpYWwgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCit7CisgICJsYXllcklkIjog
IjAuMSIsCisgICJib3VuZHMiOiB7CisgICAgIngiOiAwLAorICAgICJ5IjogMCwKKyAgICAid2lk
dGgiOiA4MDAsCisgICAgImhlaWdodCI6IDYwMAorICB9LAorICAiaXNDb21wb3NpdGVkIjogdHJ1
ZSwKKyAgIm1lbW9yeSI6IDAsCisgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICJ4IjogMCwK
KyAgICAieSI6IDAsCisgICAgIndpZHRoIjogODAwLAorICAgICJoZWlnaHQiOiA2MDAKKyAgfSwK
KyAgImNoaWxkTGF5ZXJzIjogWworICAgIHsKKyAgICAgICJsYXllcklkIjogIjAuMiIsCisgICAg
ICAiYm91bmRzIjogeworICAgICAgICAieCI6IDAsCisgICAgICAgICJ5IjogMCwKKyAgICAgICAg
IndpZHRoIjogODAwLAorICAgICAgICAiaGVpZ2h0IjogNjAwCisgICAgICB9LAorICAgICAgImlz
Q29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICB7Cisg
ICAgICAgICAgImxheWVySWQiOiAiMC4zIiwKKyAgICAgICAgICAiYm91bmRzIjogeworICAgICAg
ICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjog
MTAwLAorICAgICAgICAgICAgImhlaWdodCI6IDEwMAorICAgICAgICAgIH0sCisgICAgICAgICAg
ImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAibGF5ZXJJZCI6ICIwLjQiLAorICAgICAgICAg
ICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisg
ICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAg
ICAgIH0sCisgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgIm1lbW9y
eSI6IDEwMDAwLAorICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAg
IngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisg
ICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICB9LAorICAgICAgICAgICJjaGlsZExh
eWVycyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgImxheWVySWQiOiAiMC41IiwK
KyAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAieCI6IDAsCisgICAg
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAg
ICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAi
aXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm1lbW9yeSI6IDEwMDAwLAorICAg
ICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAor
ICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgfQorICAgICAgICAgIF0KKyAgICAg
ICAgfSwKKyAgICAgICAgeworICAgICAgICAgICJsYXllcklkIjogIjAuNiIsCisgICAgICAgICAg
ImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAg
ICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAg
ICAgICB9LAorICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICJtZW1v
cnkiOiA0MDAwMCwKKyAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAg
ICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwK
KyAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJjaGls
ZExheWVycyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgImxheWVySWQiOiAiMC43
IiwKKyAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAieCI6IDAsCisg
ICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAg
ICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm1lbW9yeSI6IDEwMDAwLAor
ICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAieCI6
IDAsCisgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUw
LAorICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgfQorICAgICAgICAgIF0KKyAg
ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICJsYXllcklkIjogIjAuOCIsCisgICAgICAg
ICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwK
KyAgICAgICAgICAgICJ3aWR0aCI6IDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAg
ICAgIH0sCisgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAgICJjaGls
ZExheWVycyI6IFtdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAibGF5ZXJJZCI6
ICIwLjkiLAorICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAg
ICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAwLAorICAgICAgICAgICAgImhl
aWdodCI6IDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwK
KyAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgImxheWVySWQiOiAiMC4xMCIsCisgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDIz
NywKKyAgICAgICAgICAgICJoZWlnaHQiOiAxNDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICJtZW1vcnkiOiAxMzY1MTIsCisgICAgICAg
ICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAyMzcsCisgICAgICAgICAgICAiaGVpZ2h0
IjogMTQ0CisgICAgICAgICAgfSwKKyAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAg
ICB9CisgICAgICBdCisgICAgfQorICBdCit9CisKKz09PSBNZXNzYWdlIHRoZSBwYWdlIHRvIGFk
ZCBhIG5ldyBjb21wb3NpdGVkIGxheWVyID09PQorCitQQVNTCisKKz09PSBHZXQgdGhlIG1vZGlm
aWVkIGxheWVyIHRyZWUgPT09CisKK1BBU1MKKworeworICAibGF5ZXJJZCI6ICIwLjEiLAorICAi
Ym91bmRzIjogeworICAgICJ4IjogMCwKKyAgICAieSI6IDAsCisgICAgIndpZHRoIjogNzg1LAor
ICAgICJoZWlnaHQiOiA2MDAKKyAgfSwKKyAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICJtZW1v
cnkiOiAwLAorICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAieCI6IDAsCisgICAgInkiOiAw
LAorICAgICJ3aWR0aCI6IDc4NSwKKyAgICAiaGVpZ2h0IjogMzA5NgorICB9LAorICAiY2hpbGRM
YXllcnMiOiBbCisgICAgeworICAgICAgImxheWVySWQiOiAiMC4yIiwKKyAgICAgICJib3VuZHMi
OiB7CisgICAgICAgICJ4IjogMCwKKyAgICAgICAgInkiOiAwLAorICAgICAgICAid2lkdGgiOiA3
ODUsCisgICAgICAgICJoZWlnaHQiOiA2MDAKKyAgICAgIH0sCisgICAgICAiaXNDb21wb3NpdGVk
IjogZmFsc2UsCisgICAgICAiY2hpbGRMYXllcnMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAi
bGF5ZXJJZCI6ICIwLjMiLAorICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6
IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAg
ICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAiaXNDb21wb3Np
dGVkIjogZmFsc2UsCisgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgfSwKKyAg
ICAgICAgeworICAgICAgICAgICJsYXllcklkIjogIjAuNCIsCisgICAgICAgICAgImJvdW5kcyI6
IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAg
ICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgfSwKKyAg
ICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAibWVtb3J5IjogMTAwMDAs
CisgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisg
ICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAg
ICJoZWlnaHQiOiA1MAorICAgICAgICAgIH0sCisgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAibGF5ZXJJZCI6ICIwLjUiLAorICAgICAgICAg
ICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAg
ImhlaWdodCI6IDUwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJpc0NvbXBvc2l0
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAg
ICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAg
ICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAg
ICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJjaGls
ZExheWVycyI6IFtdCisgICAgICAgICAgICB9CisgICAgICAgICAgXQorICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgImxheWVySWQiOiAiMC42IiwKKyAgICAgICAgICAiYm91bmRzIjog
eworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAg
IndpZHRoIjogMTAwLAorICAgICAgICAgICAgImhlaWdodCI6IDEwMAorICAgICAgICAgIH0sCisg
ICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgIm1lbW9yeSI6IDQwMDAw
LAorICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAg
ICAgImhlaWdodCI6IDEwMAorICAgICAgICAgIH0sCisgICAgICAgICAgImNoaWxkTGF5ZXJzIjog
WworICAgICAgICAgICAgeworICAgICAgICAgICAgICAibGF5ZXJJZCI6ICIwLjciLAorICAgICAg
ICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAg
ICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAg
ICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAg
ICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAg
ICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJj
aGlsZExheWVycyI6IFtdCisgICAgICAgICAgICB9CisgICAgICAgICAgXQorICAgICAgICB9LAor
ICAgICAgICB7CisgICAgICAgICAgImxheWVySWQiOiAiMC44IiwKKyAgICAgICAgICAiYm91bmRz
IjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAg
ICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICJoZWlnaHQiOiAwCisgICAgICAgICAgfSwKKyAg
ICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgImNoaWxkTGF5ZXJzIjog
W10KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICJsYXllcklkIjogIjAuOSIsCisg
ICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5
IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMAor
ICAgICAgICAgIH0sCisgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAg
ICJjaGlsZExheWVycyI6IFtdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAibGF5
ZXJJZCI6ICIwLjEwIiwKKyAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAw
LAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogMzcwLAorICAgICAg
ICAgICAgImhlaWdodCI6IDMwOTYKKyAgICAgICAgICB9LAorICAgICAgICAgICJpc0NvbXBvc2l0
ZWQiOiB0cnVlLAorICAgICAgICAgICJtZW1vcnkiOiA0NTgyMDgwLAorICAgICAgICAgICJjb21w
b3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAw
LAorICAgICAgICAgICAgIndpZHRoIjogMzcwLAorICAgICAgICAgICAgImhlaWdodCI6IDMwOTYK
KyAgICAgICAgICB9LAorICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAibGF5ZXJJZCI6ICIwLjExIiwKKyAgICAgICAgICAiYm91bmRz
IjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAg
ICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICB9LAor
ICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICJtZW1vcnkiOiAxMDAw
MCwKKyAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwK
KyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAg
ICAgImhlaWdodCI6IDUwCisgICAgICAgICAgfSwKKyAgICAgICAgICAiY2hpbGRMYXllcnMiOiBb
XQorICAgICAgICB9CisgICAgICBdCisgICAgfQorICBdCit9CisKKz09PSBPYnRhaW4gdGhlIG5v
ZGUgaWQgZm9yIHRoZSBsYXllciB3aXRoIGlkIDAuMTEgPT09CisKK1BBU1MKKworPT09IEdldCBh
dHRyaWJ1dGVzIGZvciBub2RlIHdpdGggaWQgOSA9PT0KKworUEFTUworCis9PT0gVGVzdCBjb21w
bGV0ZSwgYWxsIGV4cGVjdGVkIGNvbmRpdGlvbnMgbWV0ID09PQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDliNGI2Yzc3
ZjIxMGUzNGI4NzM1Mjk0MzRhMjA0OGNiYmM3NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApAQCAtMCwwICsxLDI2NCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24g
YWRkQ29tcG9zaXRlZExheWVyKCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbXBvc2l0ZWQiOwor
ICAgIGVsZW1lbnQuaWQgPSAibGFzdC1lbGVtZW50IjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworfTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gVmFyaWFi
bGVzIHVzZWQgdGhyb3VnaG91dCB0aGUgdGVzdC4KKyAgICB2YXIgaW5pdGlhbExheWVyVHJlZTsK
KyAgICB2YXIgZXZlbnRzQ291bnQgPSAwOworCisgICAgLy8gUmVnaXN0ZXIgZXZlbnQgaGFuZGxl
ciBmb3IgbGF5ZXJUcmVlRGlkQ2hhbmdlIGV2ZW50LgorICAgIEluc3BlY3RvclRlc3QuZXZlbnRI
YW5kbGVyWyJMYXllclRyZWUubGF5ZXJUcmVlRGlkQ2hhbmdlIl0gPSBmdW5jdGlvbiAobWVzc2Fn
ZU9iamVjdCkgeworICAgICAgICBldmVudHNDb3VudCsrOworICAgIH07CisKKyAgICAvLyBTdGFy
dCB0aGUgdGVzdC4KKyAgICBnZXREb2N1bWVudCgpOworICAgIAorICAgIGZ1bmN0aW9uIGdldERv
Y3VtZW50KCkKKyAgICB7CisgICAgICAgIC8vIFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBkb2N1bWVu
dCBzbyB0aGF0IGxhdGVyIG9uIHdlIG1heSBnZXQgc2Vuc2libGUgbm9kZUlkcy4KKyAgICAgICAg
c3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IHRoZSBEb2N1bWVudCIsCisgICAgICAgICAg
ICBjb21tYW5kOiAiRE9NLmdldERvY3VtZW50IiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9
LAorICAgICAgICAgICAgY2FsbGJhY2s6IGVuYWJsZUxheWVyVHJlZUFnZW50CisgICAgICAgIH0p
OworICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gZW5hYmxlTGF5ZXJUcmVlQWdlbnQocmVzdWx0
KQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVzdCBmaXJzdCBlbmFibGUgdGhlIGxheWVyIHRyZWUg
YWdlbnQgc28gdGhhdCB3ZSBtYXkgZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBSZW5kZXJMYXll
ciB0cmVlLgorICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJFbmFibGUgdGhlIExh
eWVyVHJlZSBhZ2VudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmVuYWJsZSIs
CisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnZXRJ
bml0aWFsTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRJ
bml0aWFsTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAg
ICAgbmFtZTogIkdldCB0aGUgaW5pdGlhbCBsYXllciB0cmVlIiwKKyAgICAgICAgICAgIGNvbW1h
bmQ6ICJMYXllclRyZWUuZ2V0TGF5ZXJUcmVlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9
LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdvdEluaXRpYWxMYXllclRyZWUKKyAgICAgICAgfSk7
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdEluaXRpYWxMYXllclRyZWUocmVzdWx0KQorICAg
IHsKKyAgICAgICAgLy8gU2F2ZSB0aGlzIGxheWVyIHRyZWUgZm9yIGxhdGVyIGNvbXBhcmlzb24u
CisgICAgICAgIGluaXRpYWxMYXllclRyZWUgPSByZXN1bHQubGF5ZXJUcmVlOworICAgICAgICAv
LyBEdW1wIHRoZSBmaXJzdCBsYXllciB0cmVlIGFzIHBhZ2UgbG9hZGVkLgorICAgICAgICBkdW1w
T2JqZWN0KGluaXRpYWxMYXllclRyZWUpOworICAgICAgICAvLyBOb3cgbWVzc2FnZSB0aGUgcGFn
ZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllci4KKyAgICAgICAgc3RlcCh7CisgICAgICAg
ICAgICBuYW1lOiAiTWVzc2FnZSB0aGUgcGFnZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXll
ciIsCisgICAgICAgICAgICBjb21tYW5kOiAiUnVudGltZS5ldmFsdWF0ZSIsCisgICAgICAgICAg
ICBwYXJhbWV0ZXJzOiB7ICJleHByZXNzaW9uIjogImFkZENvbXBvc2l0ZWRMYXllcigpIiB9LAor
ICAgICAgICAgICAgY2FsbGJhY2s6IGdldE1vZGlmaWVkTGF5ZXJUcmVlCisgICAgICAgIH0pOwor
ICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAg
eworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIG1vZGlmaWVkIGxh
eWVyIHRyZWUiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5nZXRMYXllclRyZWUi
LAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ290
TW9kaWZpZWRMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIHZhciBsYXllckNv
dW50ID0gMDsKKworICAgIGZ1bmN0aW9uIGdvdE1vZGlmaWVkTGF5ZXJUcmVlKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIC8vIER1bXAgdGhlIGZpcnN0IGxheWVyIHRyZWUgYXMgcGFnZSBsb2FkZWQu
CisgICAgICAgIGR1bXBPYmplY3QocmVzdWx0LmxheWVyVHJlZSk7CisgICAgICAgIC8vIE5vdyBm
aW5kIHRoZSBpZCBvZiB0aGUgbmV3bHkgaW5zZXJ0ZWQgbGF5ZXIuCisgICAgICAgIHZhciBtdXRh
dGlvbnMgPSBsYXllclRyZWVNdXRhdGlvbnMoaW5pdGlhbExheWVyVHJlZSwgcmVzdWx0LmxheWVy
VHJlZSk7CisgICAgICAgIHZhciBsYXN0SWQgPSBtdXRhdGlvbnMuYWRkaXRpb25zWzBdOworICAg
ICAgICAvLworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJPYnRhaW4gdGhlIG5v
ZGUgaWQgZm9yIHRoZSBsYXllciB3aXRoIGlkICIgKyBsYXN0SWQsCisgICAgICAgICAgICBjb21t
YW5kOiAiTGF5ZXJUcmVlLm5vZGVJZEZvckxheWVySWQiLAorICAgICAgICAgICAgcGFyYW1ldGVy
czogeyAibGF5ZXJJZCI6IGxhc3RJZCB9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE5vZGVJ
ZEZvckxhc3RMYXllcgorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ290Tm9k
ZUlkRm9yTGFzdExheWVyKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHZhciBpZCA9IHJlc3VsdC5u
b2RlSWQ7CisgICAgICAgIC8vIG5vdyBnZXQgdGhlIGF0dHJpYnV0ZXMgZm9yIHRoaXMgbm9kZQor
ICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgYXR0cmlidXRlcyBmb3Igbm9k
ZSB3aXRoIGlkICIgKyBpZCwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0QXR0cmlidXRl
cyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ICJub2RlSWQiOiBpZCB9LAorICAgICAgICAg
ICAgY2FsbGJhY2s6IGdvdE5vZGVBdHRyaWJ1dGVzCisgICAgICAgIH0pOworICAgIH07CisKKyAg
ICBmdW5jdGlvbiBnb3ROb2RlQXR0cmlidXRlcyhyZXN1bHQpCisgICAgeworICAgICAgICAvLyBH
ZXQgdGhlIGF0dHJpYnV0ZXMgYXMgYSBkaWN0aW9uYXJ5LgorICAgICAgICB2YXIgYXR0cmlidXRl
cyA9IGF0dHJpYnV0ZXNEaWN0aW9uYXJ5RnJvbUFycmF5KHJlc3VsdC5hdHRyaWJ1dGVzKTsKKyAg
ICAgICAgLy8gQ2hlY2sgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgaWQuCisgICAgICAgIGlmICghYXR0
cmlidXRlcy5oYXNPd25Qcm9wZXJ0eSgiaWQiKSB8fCBhdHRyaWJ1dGVzLmlkICE9ICJsYXN0LWVs
ZW1lbnQiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IERpZCBub3Qgb2J0
YWluIHRoZSBleHBlY3RlZCBlbGVtZW50IGZvciB0aGUgbGFzdCBpbnNlcnRlZCBsYXllci4iKTsK
KyAgICAgICAgLy8gQWxsIGRvbmUuCisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9OworCisg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCisgICAgeworICAgICAgICAvLyBDaGVjayB0aGF0IHdl
IGdvdCBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnRzLgorICAgICAgICBpZiAoIWV2ZW50c0NvdW50
KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IERpZCBub3QgcmVjZWl2ZSBs
YXllclRyZWVEaWRDaGFuZ2UgZXZlbnRzLiIpOworICAgICAgICAvLyBFdmVyeXRoaW5nIHdlbnQg
T0sgaWYgd2UgZ290IHRoaXMgZmFyLgorICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiXG49PT0gVGVzdCBjb21wbGV0ZSwgYWxsIGV4cGVjdGVkIGNvbmRpdGlvbnMg
bWV0ID09PSIpOworICAgICAgICAvLyBBbGwgZG9uZS4KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5j
b21wbGV0ZVRlc3QoKTsKKyAgICB9OworCisgICAgLy8gVXRpbGl0aWVzCisKKyAgICBmdW5jdGlv
biBsYXllclRyZWVNdXRhdGlvbnMob2xkTGF5ZXJUcmVlLCBuZXdMYXllclRyZWUpCisgICAgewor
ICAgICAgICB2YXIgb2xkS2V5cyA9IE9iamVjdC5rZXlzKGZsYXR0ZW5lZExheWVyVHJlZShvbGRM
YXllclRyZWUpKTsKKyAgICAgICAgdmFyIG5ld0tleXMgPSBPYmplY3Qua2V5cyhmbGF0dGVuZWRM
YXllclRyZWUobmV3TGF5ZXJUcmVlKSk7CisgICAgICAgIC8vCisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICBhZGRpdGlvbnM6IG5ld0tleXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gKG9sZEtleXMuaW5kZXhPZihrZXkpID09IC0xKTsKKyAgICAg
ICAgICAgIH0pLAorICAgICAgICAgICAgcmVtb3ZhbHM6IG9sZEtleXMuZmlsdGVyKGZ1bmN0aW9u
IChrZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG5ld0tleXMuaW5kZXhPZihrZXkpID09
IC0xKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgIH07CisgICAgfTsKKworICAgIGZ1bmN0aW9u
IGZsYXR0ZW5lZExheWVyVHJlZShsYXllclRyZWUpCisgICAgeworICAgICAgICB2YXIgbGF5ZXJC
eUlkcyA9IHt9OworICAgICAgICAvLyBSZWN1cnNlIHRocm91Z2ggdGhlIHRyZWUgdG8gYXNzZW1i
bGUgYSBmbGF0IGxpc3Qgb2YgSURzLgorICAgICAgICAoZnVuY3Rpb24gcmVjdXJzZSAobGF5ZXIp
IHsKKyAgICAgICAgICAgIGxheWVyQnlJZHNbbGF5ZXIubGF5ZXJJZF0gPSBsYXllcjsKKyAgICAg
ICAgICAgIGlmIChsYXllci5jaGlsZExheWVycykKKyAgICAgICAgICAgICAgICBsYXllci5jaGls
ZExheWVycy5mb3JFYWNoKHJlY3Vyc2UpOworICAgICAgICB9KShsYXllclRyZWUpOworCisgICAg
ICAgIHJldHVybiBsYXllckJ5SWRzOworICAgIH07CisKKyAgICBmdW5jdGlvbiBhdHRyaWJ1dGVz
RGljdGlvbmFyeUZyb21BcnJheShhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgdmFyIGRpY3Rp
b25hcnkgPSB7fQorICAgICAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBhdHRyaWJ1dGVzLmxl
bmd0aDsgaSA8IGNvdW50OyBpICs9IDIpIHsKKyAgICAgICAgICAgIGRpY3Rpb25hcnlbYXR0cmli
dXRlc1tpXV0gPSBhdHRyaWJ1dGVzW2kgKyAxXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZGljdGlvbmFyeTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZHVtcE9iamVjdChvYmopCisgICAg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG4iICsgSlNPTi5zdHJpbmdpZnkob2JqLCBu
dWxsLCAnICAnKSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgdGVzdC5uYW1lICsgIiA9PT1cbiIp
CisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQodGVzdC5jb21tYW5kLCB0ZXN0LnBh
cmFtZXRlcnMsIGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChjaGVj
a0ZhaWx1cmUodGVzdC5uYW1lLCBtZXNzYWdlT2JqZWN0KSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIHBhc3ModGVzdCk7CisgICAgICAgICAgICB0ZXN0LmNhbGxiYWNr
KG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0
aW9uIGNoZWNrRmFpbHVyZShuYW1lLCBtZXNzYWdlT2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYg
KCFtZXNzYWdlT2JqZWN0Lmhhc093blByb3BlcnR5KCdlcnJvcicpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsgbWVzc2Fn
ZU9iamVjdC5lcnJvci5tZXNzYWdlICsgIiAoIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSAr
ICIpIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH07CisKKyAgICBmdW5jdGlvbiBwYXNzKHRlc3QpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFTUyIpOworICAgIH07Cit9OworCisvLyBXYWl0IHVu
dGlsIHRoZSBET00gaXMgcmVhZHkgdG8gc3RhcnQgdGhlIHRlc3QuCit3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7
Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAg
IAorICBkaXYgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVm
dDogMDsKKyAgfQorICAgICAgCisgIC5yZWd1bGFyIHsKKyAgICB3aWR0aDogMTAwcHg7CisgICAg
aGVpZ2h0OiAxMDBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgfQorCisgIC5j
b21wb3NpdGVkIHsKKyAgICB0b3A6IDI1cHg7CisgICAgbGVmdDogMjVweDsKKyAgICB3aWR0aDog
NTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAg
ICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgfQorICAgICAgCisgIC5vZmZz
ZXQgeworICAgIGxlZnQ6IDIwMHB4OworICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVa
KDApOworICB9CisKKyAgYnV0dG9uIHsKKyAgICBtYXJnaW4tbGVmdDogMjBweDsKKyAgICBtYXJn
aW4tdG9wOiAxMjBweDsKKyAgfQorICAgICAgCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisK
KyAgICA8ZGl2IGNsYXNzPSJyZWd1bGFyIj48L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImNvbXBv
c2l0ZWQiPgorICAgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+PC9kaXY+CisgICAgPC9kaXY+
CisKKyAgICA8ZGl2IGNsYXNzPSJyZWd1bGFyIG9mZnNldCI+CisgICAgICA8ZGl2IGNsYXNzPSJj
b21wb3NpdGVkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177147</attachid>
            <date>2012-12-02 12:32:27 -0800</date>
            <delta_ts>2012-12-04 06:02:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121202212951.patch</filename>
            <type>text/plain</type>
            <size>62117</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OTYyYTViZDhlMTgzOGQ5YzU5ZjEyZjMzYjVhNDA5NDhiMjViODI5Li5h
NTg1MTViYmM3OTI3ZmE2YzkzNDBiZmQ1NDU4OGUwNzU3ZDU2NWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTIgQEAKKzIwMTItMTItMDIgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KKworICAgICAgICBQcm92aWRlIHRoZSBiYWNrZW5kIGZvciBleHBvc2luZyB0aGUgbGF5ZXIg
dHJlZSB0byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBwYXRjaCBpcyB0byBwcm92aWRl
IGEgbmV3IGFnZW50IGVuYWJsaW5nIHRoZSBXZWIgSW5zcGVjdG9yIHRvIGludGVyZmFjZSB3aXRo
IFdlYkNvcmUgdG8gYWNjZXNzCisgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZW5kZXIg
bGF5ZXIgdHJlZSBhbmQsIG1vcmUgc3BlY2lmaWNhbGx5LCBleHBvc2UgdXNlZnVsIGluZm9ybWF0
aW9uIGFib3V0IGxheWVycyBiYWNrZWQgYnkKKyAgICAgICAgdGV4dHVyZXMgY29tcG9zaXRlZCBv
biB0aGUgR1BVIHN1Y2ggYXMgbWV0cmljcyBhbmQgYmFja2luZyBzdG9yZS4gVGh1cyB3ZSBub3cg
cHJvdmlkZSBhIExheWVyVHJlZUFnZW50IHdoaWNoIHdpbGwKKyAgICAgICAgaW5mb3JtIHRoZSBm
cm9udC1lbmQgb2YgY2hhbmdlcyB0byB0aGUgcmVuZGVyIGxheWVyIHRyZWUgdmlhIGEgbmV3IGxh
eWVyVHJlZURpZENoYW5nZSBldmVudCwgcHJvdmlkaW5nIGFuIG9iamVjdAorICAgICAgICBjb250
YWluaW5nIHRoZSBlbnRpcmUgaGllcmFyY2h5IG9mIFJlbmRlckxheWVycyBmb3IgdGhlIGluc3Bl
Y3RlZCBkb2N1bWVudC4gVGhpcyBoaWVyYXJjaHkgY2FuIGJlIHF1ZXJpZWQgYXQgYW55CisgICAg
ICAgIHRpbWUgdXNpbmcgdGhlIC5nZXRMYXllclRyZWUoKSBtZXRob2Qgb24gdGhlIExheWVyVHJl
ZUFnZW50LiBGaW5hbGx5LCB0aGUgTGF5ZXJUcmVlQWdlbnQgYWxzbyBleHBvc2VzIGEgLm5vZGVJ
ZEZvckxheWVySWQoKQorICAgICAgICBtZXRob2QgYWxsb3dpbmcgdG8gZ2V0IHRoZSBpZCBvZiB0
aGUgbm9kZSBhc3NvY2lhdGVkIHdpdGggdGhlIFJlbmRlckxheWVyIHdpdGggdGhlIHByb3ZpZGVk
IGxheWVyIGlkLgorICAgICAgICAKKyAgICAgICAgSW4gdGVybXMgb2YgaW1wbGVtZW50YXRpb24s
IFJlbmRlckxheWVyQ29tcG9zaXRvciBoYXMgYmVlbiBjaGFuZ2VkIHN1Y2ggdGhhdCBpbiBpdHMg
dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoKQorICAgICAgICBtZXRob2Qgd2UgY2FsbCB0aGUgbGF5
ZXJUcmVlRGlkQ2hhbmdlIG1ldGhvZCBvbiB0aGUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgaW5z
dGFuY2UgdmlhIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uCisKKyAgICAgICAgVGVzdDog
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOiBEZWZpbmUgbmV3IHR5cGVz
IEludFJlY3QgKHgsIHksIHdpZHRoLCBoZWlnaHQpIGFuZCBMYXllciwgd2hpY2ggaG9sZHMgdGhl
IGluZm9ybWF0aW9uIGZvciBhCisgICAgICAgIFJlbmRlckxheWVyIChsYXllcklkLCBib3VuZHMs
IGlzQ29tcG9zaXRlZCwgbWVtb3J5LCBjb21wb3NpdGVkQm91bmRzKSBhbmQgaXRzIGNoaWxkcmVu
IChjaGlsZExheWVycykuIFdlIGFsc28gZGVmaW5lIHRoZQorICAgICAgICBtZXRob2RzIG9mIHRo
ZSBMYXllclRyZWVBZ2VudCBvYmplY3QgKGVuYWJsZSwgZGlzYWJsZSwgZ2V0TGF5ZXJUcmVlLCBu
b2RlSWRGb3JMYXllcklkKSBhbmQgdGhlIGxheWVyVHJlZURpZENoYW5nZSBldmVudCBpdCAgCisg
ICAgICAgIGZpcmVzLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQp
OiBOZXcgbWV0aG9kIGZhY2lsaXRhdGluZyBwdXNoaW5nIHRoZSBub2RlIGFzc29jaWF0ZWQgd2l0
aCAKKyAgICAgICAgYSBnaXZlbiBSZW5kZXJMYXllciB0byB0aGUgZnJvbnQtZW5kLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6Cisg
ICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2VJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVy
TGF5ZXJEZXN0cm95ZWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmxheWVyVHJlZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoTGF5ZXJUcmVlQWdlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6On5JbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6c2V0RnJvbnRlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmNsZWFyRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlc3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjplbmFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVuZGVyTGF5ZXJEZXN0cm95
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdldExheWVy
VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRP
YmplY3RGb3JSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIpOiBCdWlsZCB0aGUgZW50aXJlIGhpZXJhcmNoeSBv
ZiBSZW5kZXJMYXllcnMgZnJvbSB0aGUgcHJvdmlkZWQgCisgICAgICAgIFJlbmRlckxheWVyLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
SW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Ymlu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6dW5iaW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2RlSWRGb3JMYXll
cklkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3RvckxheWVyVHJlZUFnZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjcmVhdGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6Okluc3RydW1lbnRp
bmdBZ2VudHMpOgorICAgICAgICAoSW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjppbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjpzZXRJbnNwZWN0b3JMYXllclRyZWVB
Z2VudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5n
TGF5ZXJzKTogQ2FsbCB0aGUgbGF5ZXJUcmVlRGlkQ2hhbmdlIG1ldGhvZCBvbiB0aGUgTGF5ZXJU
cmVlQWdlbnQgdmlhIHRoZSAKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIHRvIGlu
Zm9ybSB0aGUgZnJvbnQtZW5kIHRoYXQgdGhlIFJlbmRlckxheWVyIGhpZXJhcmNoeSBoYXMgY2hh
bmdlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQpOiBDYWxsIHRoZSByZW5kZXJMYXll
ckRlc3Ryb3llZCBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50IHZpYSAKKyAgICAgICAgdGhl
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB0byB1bmJpbmQgdGhlIGxheWVyIHRoYXQgaXMgYmVp
bmcgZGVzdHJveWVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aDoKKyAgICAgICAgKFJlbmRlckxheWVyQ29tcG9zaXRvcik6CisKIDIwMTItMTEtMjggIEh1YW5n
IERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleG1hcF0g
UkVHUkVTU0lPTihyMTM1NjIwKSBRdFRlc3RCcm93c2VyIGNyYXNoZXMgb24gR29vZ2xlLWdyYXZp
dHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNhNWQyMTczNTg0NWYwYmQ4YTU0NzNiYTZmYjBk
MDlkMGZmNTEyYjIuLjczYjMxNTM0MGNmMmUwZDk0NWUzNzE1NTdlZjU2Y2RiZDQxZTczNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTk1LDYgKzE1OTUsNyBAQCBTRVQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGRjY2JmN2JlZDJiY2VkMTkyMDIw
NzhlYTQ2MTIxNDc5ODI0ZWQ3YWIuLmM3Njk4N2M0Nzg4Njg3ZTcxOWIzMjE0ZjdiMjQ1NGFmNWE1
N2Q4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzczMyw2ICszNzMzLDgg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQppbmRleCBjNTdkNThiMjBjYzVmNWU3MmVjODk1MWFiNjE2MmIzMTcw
YWZmYTVlLi4wNGM3NGNlMjYxZDc2YjI5NGM2MGUwZTE3M2YwMWY1YjdjZWIwNzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKQEAgLTc3MCw2ICs3NzAsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rvcnku
Y3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCkBAIC0xOTE1LDYg
KzE5MTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA2ZjkxMjAyMWQ0ZmMzYmVjYjg0
NWEzYTIyNjJmZjI1M2UxMGEzZDIuLmIxNDVhZGU4OTk5NzA0YmFkOGJjNjY4NWU4MGUyNTcwYWIz
ZjU4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4ODAsNiArMjg4MCw4IEBACiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9J
bnNwZWN0b3JMYXllclRyZWVBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
MTFkM2EyMjMzMGZiODFhN2MwYWJjMmFhNjMxMDFhMDFmZjlhYWIyNC4uN2Y5ZTY1ODg0MDBlZDg5
ODUxMmYxM2M4ZGM5YWY1MjFmY2FkNmIyZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc1MzM4LDYgKzc1MzM4LDMwIEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yTWVtb3J5QWdlbnQuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiMmQ1NzU2Y2M1YTYwMDVkNGRmOWNlZTc1MWZhOWQ4MmQ2YWZmZWNjLi43YzEzNzY5NTgzZWIy
N2E1YjQ3NmQ0YzcyMzZiNzcwYzFiOTUwNjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTEwLDYgKzE5MTAsOCBAQAogCQk3
MTkwNERFQTE1NkE2MzNBMDAxRTFCQTUgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oIGluIENv
cHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLzsg
fTsKIAkJNzFBNTdERjExNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERUYxNTRC
RTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwICovOyB9OwogCQk3MUE1N0RGMjE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNW
R1BhdGhVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNzFCMUUxMjUxNjQwNDhGNzAwQjE4ODBBIC8qIElu
c3BlY3RvckxheWVyVHJlZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaCAqLzsgfTsKKwkJNzFCMUUxMjYxNjQwNDkxQTAwQjE4ODBBIC8qIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5jcHAgKi87IH07CiAJCTcxQ0M3QTIwMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9u
LmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBh
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MURD
QjZGRjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCAqLzsgfTsKIAkJNzFE
Q0I3MDIxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcx
IC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovOyB9OwpAQCAtOTE4Niw2ICs5MTg4LDggQEAKIAkJNzE4
NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoVXRpbGl0aWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIw
IC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUGF0aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIxRTEy
MzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEg
LyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzFDQzdBMUYxNTJBMEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRENCNkZGMTU2ODE5
NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTVkdab29tQW5kUGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR1pvb21BbmRQYW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODEwLDYgKzE0ODE0LDggQEAKIAkJCQlBQTczMTgz
QzE1OTI1NUI5MDBBOTNFNkUgLyogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwICovLAog
CQkJCUFBNzMxODNEMTU5MjU1QjkwMEE5M0U2RSAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVs
ZS5oICovLAogCQkJCUFBOTAzMEZFMTU3RTE2QTAwMDI3NjI0NyAvKiBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZVNvdXJjZS5qcyAqLywKKwkJCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyog
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovLAorCQkJCTcxQjFFMTI0MTY0MDQ4Q0MwMEIx
ODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oICovLAogCQkJCTdBMEU3NkY2MTBCRjA4
RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkY3MTBC
RjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk3QTBFNzZGODEw
QkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLywKQEAgLTIzMzE2LDYg
KzIzMzIyLDcgQEAKIAkJCQk4NTAyQUI1NDBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5j
R0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjk4MEFENDM5NEUwMDM3ODU0MCAv
KiBET01TVkdGRUZ1bmNHRWxlbWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAy
QUI1NjBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jUkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcxQjFFMTI1MTY0MDQ4RjcwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFCOTkwQUQ0Mzk0RTAwMzc4NTQwIC8qIERP
TVNWR0ZFRnVuY1JFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjU4
MEFENDM4QzAwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDJBQjlBMEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjE3NCw2ICsyNjE4MSw3
IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3MUIxRTEyNjE2NDA0OTFBMDBCMTg4MEEg
LyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5
REExNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjlDMTZFMTMwMEMyRTIwMDJENzk0RSAvKiBBY2Nlc3NpYmlsaXR5
QWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KaW5kZXggNjM1ZmE5NDE1MDViMTgzYmVkY2NlYzg2Nzg1OTQ0MTJjNmVhYjJjMy4u
YmI0ZTNkMjY1ZjI2MTEzMTlhNjY2ZTY1ZWFlZDI1MDVkMmNkMzVkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzI0MSw1ICszMjQxLDcyIEBACiAgICAgICAg
ICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbXQorICAgIH0sCisgICAgewor
ICAgICAgICAiZG9tYWluIjogIkxheWVyVHJlZSIsCisgICAgICAgICJoaWRkZW4iOiB0cnVlLAor
ICAgICAgICAidHlwZXMiOiBbCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjog
IkxheWVySWQiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBSZW5kZXJMYXllciBpZGVudGlmaWVyLiIKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkludFJl
Y3QiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRp
ZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogImludGVn
ZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHggcG9zaXRpb24uIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRo
ZSB5IHBvc2l0aW9uLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIs
ICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHdpZHRoIG1ldHJpYy4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50ZWdl
ciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGVpZ2h0IG1ldHJpYy4iIH0KKyAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6
ICJMYXllciIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYSBjb21wb3NpdGluZyBsYXll
ci4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImxheWVySWQiLCAiJHJlZiI6ICJMYXllcklkIiwgImRlc2NyaXB0aW9uIjog
IlRoZSB1bmlxdWUgaWQgZm9yIHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImJvdW5kcyIsICIkcmVmIjogIkludFJlY3QiLCAiZGVzY3JpcHRpb24iOiAiQm91
bmRzIG9mIHRoZSBsYXllci4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXND
b21wb3NpdGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMg
d2hldGhlciB0aGlzIGxheWVyIGlzIGNvbXBvc2l0ZWQuIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm1lbW9yeSIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiRXN0aW1hdGVkIG1lbW9yeSB1c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbXBvc2l0ZWRCb3VuZHMiLCAiJHJl
ZiI6ICJJbnRSZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3Vu
ZHMgb2YgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImNoaWxkTGF5ZXJzIiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAi
aXRlbXMiOiB7ICIkcmVmIjogIkxheWVyIiB9LCAiZGVzY3JpcHRpb24iOiAiQ2hpbGQgbGF5ZXJz
LiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAg
ICAgImNvbW1hbmRzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImVuYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgY29tcG9z
aXRpbmcgdHJlZSBpbnNwZWN0aW9uLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkRpc2FibGVzIGNvbXBvc2l0aW5nIHRyZWUgaW5zcGVjdGlvbi4iCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldExheWVy
VHJlZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxheWVy
IHRyZWUgc3RydWN0dXJlIG9mIHRoZSBjdXJyZW50IHBhZ2UuIiwKKyAgICAgICAgICAgICAgICAi
cmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllclRyZWUiLCAi
JHJlZiI6ICJMYXllciIsICJkZXNjcmlwdGlvbiI6ICJMYXllciB0cmVlIHN0cnVjdHVyZSBvZiB0
aGUgY3VycmVudCBwYWdlLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAibm9kZUlkRm9yTGF5ZXJJZCIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5vZGUgaWQgZm9y
IGEgZ2l2ZW4gbGF5ZXIgaWQuIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllcklkIiwgIiRyZWYiOiAiTGF5ZXJJZCIg
fQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIs
ICJkZXNjcmlwdGlvbiI6ICJUaGUgbm9kZSBpZCBmb3IgdGhlIGdpdmVuIGxheWVyIGlkLiIgfQor
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2
ZW50cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJsYXllclRy
ZWVEaWRDaGFuZ2UiCisgICAgICAgICAgICB9CisgICAgICAgIF0KICAgICB9XQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggZDE5YWQy
ZTBhMDIzYjk5YTg2NDQ1NjdhMzE0Zjc0YTFkZmY3MDcxZi4uMDMwMWIxY2NhZGE1MjUzZjBlOWFi
ZTVlOGIxODY5NjFmODBhOTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWxsSW5PbmUuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
SGlzdG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAiCisjaW5jbHVkZSAiSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdl
QWdlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IGNhOTJjNGFlMjM2ZDA1YWUzYmY4NDNkZjhkYWU3ODhhMzZhMDQ3NWUu
LmUzYjAyN2FmNjFkNjU5MmQyZjU4MzcyMTVlYWM1NTcxYTBjYTNiNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU2LDYgKzU2
LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckluZGV4ZWREQkFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKQEAgLTE1MSw2ICsxNTIsOCBAQCBJbnNwZWN0
b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQwogCiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBw
YWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkpOwogCisgICAgbV9hZ2VudHMuYXBw
ZW5kKEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlKSk7CisKICAgICBBU1NFUlRfQVJHKGluc3BlY3Rv
ckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+
aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQobV9pbnNwZWN0b3JBZ2VudAogICAgICAgICAsIGNv
bnNvbGVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggMWIwODkzNDcyMWEyZmVkMzljMzJiYTI0MDBlMzA4MDc4NjRkMTMzYy4uYjVk
NGNlNzhlZjU2MjA4ODBmMTAwZWNkMDczYmRlM2Y5ODdkNTQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01NjMsNiArNTYzLDExIEBA
IGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2Rl
VG9QdXNoKQogICAgIHJldHVybiBtYXAtPmdldChub2RlVG9QdXNoKTsKIH0KIAoraW50IEluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3Qg
UmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKHJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5ub2RlKCkpOworfQorCiBpbnQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1fZG9j
dW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDNiNzI2NTI4MzFiMTFjYjFjNDNmZTFiODFkZjI2OTBk
Y2FiYjM0MmQuLmQ3NzM1ZGEyOWNjZDk0OTUyOWVjYWU3ZDgxYmU2OGNhZTk2NTRkMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CkBAIC0xOTksNiArMjAwLDcgQEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJv
bSBvdGhlciBhZ2VudHMuCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJl
dHVybiBtX3BhZ2VBZ2VudDsgfQorICAgIGludCBwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRv
RnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JE
T01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVj
dG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCmluZGV4IDJhY2Q2MmI1NDQzNmZlZWY3ZDc4MjNiZTM3MTQ1MmZkMjgxODY0MTguLjVj
NWUxYzk2ZjUwZGMxMDQ5MmIzMmIzN2NlZGIwMjg0ZDdlMDg3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC01
NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIgpAQCAtOTEyLDcgKzkxMywxMCBA
QCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudAogICAgICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5j
bGVhclJlc291cmNlcygpOwogICAgICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgICAg
IGRvbUFnZW50LT5zZXREb2N1bWVudChtYWluRnJhbWUtPmRvY3VtZW50KCkpOwotCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZXNldCgpOworI2Vu
ZGlmCiAgICAgICAgIGluc3BlY3RvckFnZW50LT5kaWRDb21taXRMb2FkKCk7CiAgICAgfQogICAg
IGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvclBhZ2VBZ2VudCgpKQpAQCAtMTMwMCw2ICsxMzA0LDIwIEBAIERldmljZU9yaWVu
dGF0aW9uRGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVu
dGF0aW9uSW1wbChJCiAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogfQogCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmxheWVyVHJlZURpZENoYW5nZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cykKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAg
ICAgICAgbGF5ZXJUcmVlQWdlbnQtPmxheWVyVHJlZURpZENoYW5nZSgpOworfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlbmRlckxheWVyKiByZW5k
ZXJMYXllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAg
ICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAppbmRleCA5NjM0NThkNGQ1MzU5YTJiZTU2YjcyZjBjZWU5MDZhMjEz
YjYxY2FjLi4wM2IxNWU5ZWI1M2MxNzQ5MWI3OWRjMzIzZGU0MDQ0YmQ0ZDgxYTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJ
bnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CitjbGFzcyBSZW5k
ZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0yODAsNiArMjgxLDExIEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24o
UGFnZSosIERldmljZU9yaWVudGF0aW9uRGF0YSopOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIHN0YXRpYyB2b2lkIGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7Cisg
ICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxh
eWVyKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0
YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7CkBAIC00NTksNiArNDY1LDEyIEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJy
aWRlRGV2aWNlT3JpZW50YXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEZXZpY2VPcmll
bnRhdGlvbkRhdGEqKTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBz
dGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsK
KyAgICBzdGF0aWMgdm9pZCByZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBpbnQgc19m
cm9udGVuZENvdW50ZXI7CiAjZW5kaWYKIH07CkBAIC0xNTQyLDYgKzE1NTQsMjAgQEAgaW5saW5l
IERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlk
ZURldmljZU9yaWVudGF0aW8KICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiB9CiAKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZShQYWdlKiBwYWdlKQoreworICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIGxheWVyVHJlZURpZENoYW5nZUltcGwoaW5zdHJ1
bWVudGluZ0FnZW50cyk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSogcGFnZSwgY29uc3QgUmVuZGVyTGF5ZXIqIHJl
bmRlckxheWVyKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIHJlbmRl
ckxheWVyRGVzdHJveWVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCByZW5kZXJMYXllcik7Cit9
CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNvbGxlY3RpbmdIVE1MUGFyc2VFcnJvcnMoUGFnZSogcGFnZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRmMzNjOTgxNDhmYzhlZjVjZmQxZTUzYTE5MGUxOWJkNzBhNzI2
ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0wLDAgKzEsMjM0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KworI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFnZW50LmgiCisKKyNpbmNsdWRlICJJZGVu
dGlmaWVyc0ZhY3RvcnkuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNp
bmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRl
ckxheWVyQmFja2luZy5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
TGF5ZXJUcmVlQWdlbnRTdGF0ZSB7CitzdGF0aWMgY29uc3QgY2hhciBsYXllclRyZWVBZ2VudEVu
YWJsZWRbXSA9ICJsYXllclRyZWVBZ2VudEVuYWJsZWQiOworfTsKKworSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAg
ICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4oIkxheWVyVHJl
ZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBh
Z2UpCisgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBtX2VuYWJsZWQoZmFsc2UpCit7CisgICAg
Cit9CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQo
KQoreworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQt
PmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjbGVhckZy
b250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAgICBkaXNhYmxlKDApOworfQorCit2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3JlKCkKK3sKKyAgICBlbmFibGUoMCk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlc2V0KCkKK3sKKyAgICBtX2Rv
Y3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7CisgICAgbV9pZFRvTGF5ZXIuY2xlYXIoKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nKikKK3sK
KyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihMYXllclRyZWVBZ2VudFN0YXRlOjpsYXllclRy
ZWVBZ2VudEVuYWJsZWQpKQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFibGVkID0gdHJ1ZTsK
KyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFn
ZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldElu
c3BlY3RvckxheWVyVHJlZUFnZW50KHRoaXMpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBpZiAoIW1fZW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IGZhbHNlOworICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5ZXJUcmVlQWdlbnRFbmFibGVkLCBtX2VuYWJs
ZWQpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENo
YW5nZSgpCit7CisgICAgbV9mcm9udGVuZC0+bGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFJl
bmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICB1bmJpbmQocmVuZGVyTGF5ZXIpOworfQor
Cit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+JiBvYmplY3QpCit7CisgICAg
b2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSb290TGF5ZXIoKTsKK30KKworUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yUm9vdExheWVyKCkKK3sKKyAgICByZXR1cm4gYnVpbGRPYmplY3RGb3JMYXllciht
X2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRv
cigpLT5yb290UmVuZGVyTGF5ZXIoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Okxh
eWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxh
eWVyKFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBib29sIGlzQ29tcG9zaXRlZCA9
IHJlbmRlckxheWVyLT5pc0NvbXBvc2l0ZWQoKTsKKworICAgIC8vIEJhc2ljIHNldCBvZiBwcm9w
ZXJ0aWVzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJP
YmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAgICAgICAg
LnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikpCisgICAgICAgIC5zZXRCb3VuZHMoYnVpbGRP
YmplY3RGb3JJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocmVuZGVyTGF5ZXItPmxvY2FsQm91bmRp
bmdCb3goKSkpKQorICAgICAgICAuc2V0SXNDb21wb3NpdGVkKGlzQ29tcG9zaXRlZCk7CisKKyAg
ICAvLyBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBjb21wb3NpdGVkIGxheWVycyBvbmx5LgorICAg
IGlmIChpc0NvbXBvc2l0ZWQpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5n
ID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldE1lbW9y
eShiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpKTsKKyAgICAgICAgbGF5ZXJP
YmplY3QtPnNldENvbXBvc2l0ZWRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGJhY2tpbmct
PmNvbXBvc2l0ZWRCb3VuZHMoKSkpOworICAgIH0KKworICAgIC8vIFByb2Nlc3MgY2hpbGRyZW4g
bGF5ZXJzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVy
VHJlZTo6TGF5ZXI+ID4gY2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOworCisgICAgcmVuZGVyTGF5ZXItPnVw
ZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOworCisgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHJl
ZmxlY3Rpb24gbGF5ZXIuCisgICAgaWYgKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkK
KyAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHJlbmRl
ckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkpOworCisgICAgaWYgKHJlbmRlckxheWVyLT5pc1N0
YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVn
Wk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAg
IHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBjaGls
ZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobmVnWk9yZGVyTGlzdC0+YXQo
aSkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiog
bm9ybWFsRmxvd0xpc3QgPSByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAg
ICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICBjaGlsZHJlbkFy
cmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobm9ybWFsRmxvd0xpc3QtPmF0KGkpKSk7
CisgICAgfQorICAgIAorICAgIGlmIChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkg
eworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSByZW5k
ZXJMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUg
PSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRl
bShidWlsZE9iamVjdEZvckxheWVyKHBvc1pPcmRlckxpc3QtPmF0KGkpKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsYXllck9iamVjdC0+c2V0Q2hpbGRMYXllcnMoY2hpbGRyZW5BcnJheSk7
CisgICAgCisgICAgcmV0dXJuIGxheWVyT2JqZWN0OworfQorCitQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9i
amVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gVHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFgocmVjdC54
KCkpCisgICAgICAgIC5zZXRZKHJlY3QueSgpKQorICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0
aCgpKQorICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpLnJlbGVhc2UoKTsKK30KKwor
U3RyaW5nIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBs
YXllcikKK3sKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgU3RyaW5n
IGlkZW50aWZpZXIgPSBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXllcik7CisgICAgaWYg
KGlkZW50aWZpZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXJz
RmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOworICAgICAgICBtX2RvY3VtZW50TGF5ZXJUb0lk
TWFwLnNldChsYXllciwgaWRlbnRpZmllcik7CisgICAgICAgIG1faWRUb0xheWVyLnNldChpZGVu
dGlmaWVyLCBsYXllcik7CisgICAgfQorICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lk
IEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVy
KQoreworICAgIFN0cmluZyBpZGVudGlmaWVyID0gbV9kb2N1bWVudExheWVyVG9JZE1hcC5nZXQo
bGF5ZXIpOworICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnJlbW92ZShsYXllcik7CisgICAgbV9pZFRvTGF5
ZXIucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50
Ojpub2RlSWRGb3JMYXllcklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBsYXllcklkLCBpbnQqIHJlc3VsdE5vZGVJZCkKK3sKKyAgICAvLyBPYnRhaW4gdGhlIFJlbmRl
ckxheWVyIGZyb20gdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQuCisgICAgY29uc3QgUmVuZGVyTGF5
ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOworICAgIAorICAgIC8v
IFNlbmQgYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCByZWdpc3RlcmVkIGxheWVyIGlkLgor
ICAgIGlmICghcmVuZGVyTGF5ZXIpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5v
dCBmaW5kIGEgYm91bmQgbGF5ZXIgZm9yIHRoZSBwcm92aWRlZCBpZCI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgLy8gR2V0IHRoZSBub2RlIGlkIGZyb20gdGhlIERPTSBhZ2Vu
dCBhbmQgcmV0dXJuIGl0IHRvIHRoZSBmcm9udC1lbmQuCisgICAgSW5zcGVjdG9yRE9NQWdlbnQq
IGluc3BlY3RvckRPTUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01B
Z2VudCgpOworICAgICpyZXN1bHROb2RlSWQgPSBpbnNwZWN0b3JET01BZ2VudC0+cHVzaE5vZGVQ
YXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKHJlbmRlckxheWVyKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiYTVmMjE5YWFkNmU0
YmE1MjJjZTEyZTc0NjQwMTViN2EyZGQ4NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMCwwICsxLDk2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEluc3BlY3RvckxheWVyVHJlZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnRfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3Bl
Y3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOworY2xhc3MgUGFnZTsKKwordHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJp
bmc7CisKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckJh
c2VBZ2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcjo6TGF5ZXJUcmVlQ29tbWFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvckxheWVyVHJlZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdl
KiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JMYXll
clRyZWVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgcGFnZSkpOworICAgIH0KKyAg
ICB+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9u
dGVuZChJbnNwZWN0b3JGcm9udGVuZCopOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5k
KCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAg
ICB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOworICAgIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95
ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1l
bmQuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGdldExheWVyVHJl
ZShFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbm9kZUlkRm9yTGF5ZXJJZChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgbGF5ZXJJZCwgaW50KiByZXN1bHROb2RlSWQpOworCitwcml2YXRlOgorICAgIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSos
IFBhZ2UqKTsKKworICAgIC8vIFJlbmRlckxheWVyLXJlbGF0ZWQgbWV0aG9kcy4KKyAgICBTdHJp
bmcgYmluZChjb25zdCBSZW5kZXJMYXllciopOworICAgIHZvaWQgdW5iaW5kKGNvbnN0IFJlbmRl
ckxheWVyKik7CisKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVy
PiBidWlsZE9iamVjdEZvclJvb3RMYXllcigpOyAgIAorICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuZGVyTGF5ZXIqKTsK
KyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2Jq
ZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIAorICAgIFBhZ2UqIG1faW5z
cGVjdGVkUGFnZTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6TGF5ZXJUcmVlKiBtX2Zyb250ZW5k
OworICAgIGJvb2wgbV9lbmFibGVkOworCisgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllcios
IFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgY29u
c3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjExNmY5NDMxM2MyYjI4N2JlYjc4ZWU5
ZDcyZTE3YjQ1Zi4uN2UyNzA5ZjcyZWM4YzdmZWIzMzE3MGIzZWUwMjM4NWExZWM2YTgxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCkBAIC00
Nyw2ICs0Nyw3IEBAIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OworY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50
OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKQEAgLTY1LDYgKzY2LDcgQEAgcHVibGlj
OgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvclBh
Z2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NTQWdlbnQoMCkKKyAgICAgICAgLCBt
X2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JDb25zb2xl
QWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFnZW50KDApCiAgICAgICAgICwgbV9p
bnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAgKzE1NSwxOCBAQCBwdWJsaWM6CiAg
ICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNhbnZhc0FnZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAgIHZvaWQgc2V0SW5zcGVjdG9yQ2Fu
dmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yQ2FudmFz
QWdlbnQgPSBhZ2VudDsgfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAg
IEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBpbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7IH0KKyAgICB2b2lkIHNldEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBhZ2VudCkgeyBtX2lu
c3BlY3RvckxheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50OwogICAgIEluc3BlY3RvclBhZ2VBZ2Vu
dCogbV9pbnNwZWN0b3JQYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1faW5zcGVj
dG9yQ1NTQWdlbnQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50OworI2VuZGlmCiAg
ICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3RvckNvbnNvbGVBZ2VudDsKICAgICBJ
bnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2VudDsKICAgICBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDg3MGJmMWRkZmE3
Mzk1OWMwZWUwYTJjYzE4ZTllZmE4ODU5Y2YyMWMuLmJjMWQ3MTAxOTBhMjU2NWUwZTRmZGNkNTM5
ODk1ZTdjM2U4ODA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTElG
cmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0
UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXBwbGV0
LmgiCkBAIC01MDgsNiArNTA5LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRlCiAKICAgICBp
ZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAgICAgICAgZW5hYmxlQ29tcG9zaXRp
bmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUgaW5zcGVjdG9yIHRoYXQgdGhlIGxh
eWVyIHRyZWUgaGFzIGNoYW5nZWQuCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXll
clRyZWVEaWRDaGFuZ2UocGFnZSgpKTsKK30KKwordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIp
Cit7CisgICAgLy8gSW5mb3JtIHRoZSBpbnNwZWN0b3IgdGhhdCB0aGUgZ2l2ZW4gUmVuZGVyTGF5
ZXIgd2FzIGRlc3Ryb3llZC4KKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxh
eWVyRGVzdHJveWVkKHBhZ2UoKSwgcmVuZGVyTGF5ZXIpOworCisgICAgQVNTRVJUKG1fY29tcG9z
aXRlZExheWVyQ291bnQgPiAwKTsKKyAgICAtLW1fY29tcG9zaXRlZExheWVyQ291bnQ7CiB9CiAK
ICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNGQ4MjhmMWE1ZjFmMTAwYmYyNDBiYzMxNGIwMzczYWRh
YmJiNTZmNy4uYzEyZWRkOGYzYjNlNGYxMjVjNTViNzJhYTNkYTg5MzM0ZDAyYTE5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAt
MTcwLDExICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckJhY2tpbmdGb3JBbGxMYXll
cnMoKTsKICAgICAKICAgICB2b2lkIGxheWVyQmVjYW1lQ29tcG9zaXRlZChjb25zdCBSZW5kZXJM
YXllciopIHsgKyttX2NvbXBvc2l0ZWRMYXllckNvdW50OyB9Ci0gICAgdm9pZCBsYXllckJlY2Ft
ZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKQotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX2NvbXBvc2l0ZWRMYXll
ckNvdW50OwotICAgIH0KKyAgICB2b2lkIGxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBS
ZW5kZXJMYXllciopOwogICAgIAogI2lmIEVOQUJMRShWSURFTykKICAgICAvLyBVc2UgYnkgUmVu
ZGVyVmlkZW8gdG8gYXNrIGlmIGl0IHNob3VsZCB0cnkgdG8gdXNlIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDliYjE0MjAxZjkzYTA1YmJhZTc0ODZmMGQxOTY4NjJkYWRkZTIxZGMu
LjJlMDUzNDJhNGI1ZDVkYzQ5ZDNhM2QxMzAyZDk2MTRiNWI1OTY4ZTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMi0xMi0wMiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgor
CisgICAgICAgIFByb3ZpZGUgdGhlIGJhY2tlbmQgZm9yIGV4cG9zaW5nIHRoZSBsYXllciB0cmVl
IHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpbmcgYSBMYXlvdXRUZXN0IHRoYXQgZXhlcmNpc2VzIHRoZSB2YXJp
b3VzIEFQSXMgYW5kIGV2ZW50cyBleHBvc2VkIGJ5IHRoZSBMYXllclRyZWVBZ2VudC4gVGhpcyB0
ZXN0IGlzIHNraXBwZWQgb24gbm9uLU1hYworICAgICAgICBwbGF0Zm9ybXMgYXMgdGhlIHRlc3Qg
ZmFpbHMgb24gc29tZSBib3RzIGFuZCBpdCdzIHRoZSBvbmx5IHBsYXRmb3JtIEkgY291bGQgdGVz
dCBpdCBvbi4KKworICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDEyLTExLTI4ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIEFkZCBiYXNpYyBpbXBsZW1lbnRhdGlvbiBmb3IgTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xh
eWVyLXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xh
eWVyLXRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NDI2MjViODhiYTliOTAyMjY1ZjM5
ZDNkMDUxNWQzYmJkMTI1NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNjMgQEAKKwor
PT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKworPT09IEVuYWJsZSB0aGUgTGF5ZXJU
cmVlIGFnZW50ID09PQorCitQQVNTCisKKz09PSBHZXQgdGhlIGluaXRpYWwgbGF5ZXIgdHJlZSA9
PT0KKworUEFTUworCit7CisgICJsYXllcklkIjogIjAuMSIsCisgICJib3VuZHMiOiB7CisgICAg
IngiOiAwLAorICAgICJ5IjogMCwKKyAgICAid2lkdGgiOiA4MDAsCisgICAgImhlaWdodCI6IDYw
MAorICB9LAorICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgIm1lbW9yeSI6IDAsCisgICJjb21w
b3NpdGVkQm91bmRzIjogeworICAgICJ4IjogMCwKKyAgICAieSI6IDAsCisgICAgIndpZHRoIjog
ODAwLAorICAgICJoZWlnaHQiOiA2MDAKKyAgfSwKKyAgImNoaWxkTGF5ZXJzIjogWworICAgIHsK
KyAgICAgICJsYXllcklkIjogIjAuMiIsCisgICAgICAiYm91bmRzIjogeworICAgICAgICAieCI6
IDAsCisgICAgICAgICJ5IjogMCwKKyAgICAgICAgIndpZHRoIjogODAwLAorICAgICAgICAiaGVp
Z2h0IjogNjAwCisgICAgICB9LAorICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAg
ImNoaWxkTGF5ZXJzIjogWworICAgICAgICB7CisgICAgICAgICAgImxheWVySWQiOiAiMC4zIiwK
KyAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
InkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAgImhlaWdodCI6
IDEwMAorICAgICAgICAgIH0sCisgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAg
ICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAibGF5ZXJJZCI6ICIwLjQiLAorICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAi
eCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAg
ICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgIH0sCisgICAgICAgICAgImlzQ29tcG9z
aXRlZCI6IHRydWUsCisgICAgICAgICAgIm1lbW9yeSI6IDEwMDAwLAorICAgICAgICAgICJjb21w
b3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAw
LAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAg
ICAgICAgICB9LAorICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgImxheWVySWQiOiAiMC41IiwKKyAgICAgICAgICAgICAgImJvdW5kcyI6IHsK
KyAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgIm1lbW9yeSI6IDEwMDAwLAorICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgInkiOiAwLAor
ICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1
MAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAg
ICAgICAgICAgfQorICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg
ICJsYXllcklkIjogIjAuNiIsCisgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4
IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAg
ICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICB9LAorICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiB0cnVlLAorICAgICAgICAgICJtZW1vcnkiOiA0MDAwMCwKKyAgICAgICAgICAiY29t
cG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5Ijog
MCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICJoZWlnaHQiOiAxMDAK
KyAgICAgICAgICB9LAorICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgImxheWVySWQiOiAiMC43IiwKKyAgICAgICAgICAgICAgImJvdW5kcyI6
IHsKKyAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAor
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgIm1lbW9yeSI6IDEwMDAwLAorICAgICAgICAgICAgICAiY29tcG9zaXRlZEJv
dW5kcyI6IHsKKyAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgInkiOiAw
LAorICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICJoZWlnaHQi
OiA1MAorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQor
ICAgICAgICAgICAgfQorICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg
ICAgICJsYXllcklkIjogIjAuOCIsCisgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAg
ICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDAsCisg
ICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAgICAgIH0sCisgICAgICAgICAgImlzQ29tcG9z
aXRlZCI6IGZhbHNlLAorICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAibGF5ZXJJZCI6ICIwLjkiLAorICAgICAgICAgICJib3VuZHMi
OiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAg
ICAid2lkdGgiOiAwLAorICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAgICB9LAorICAg
ICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAiY2hpbGRMYXllcnMiOiBb
XQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgImxheWVySWQiOiAiMC4xMCIsCisg
ICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5
IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDIzNywKKyAgICAgICAgICAgICJoZWlnaHQiOiAx
NDQKKyAgICAgICAgICB9LAorICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAg
ICAgICJtZW1vcnkiOiAxMzY1MTIsCisgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7Cisg
ICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAid2lk
dGgiOiAyMzcsCisgICAgICAgICAgICAiaGVpZ2h0IjogMTQ0CisgICAgICAgICAgfSwKKyAgICAg
ICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICB9CisgICAgICBdCisgICAgfQorICBdCit9
CisKKz09PSBNZXNzYWdlIHRoZSBwYWdlIHRvIGFkZCBhIG5ldyBjb21wb3NpdGVkIGxheWVyID09
PQorCitQQVNTCisKKz09PSBHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUgPT09CisKK1BBU1MK
KworeworICAibGF5ZXJJZCI6ICIwLjEiLAorICAiYm91bmRzIjogeworICAgICJ4IjogMCwKKyAg
ICAieSI6IDAsCisgICAgIndpZHRoIjogNzg1LAorICAgICJoZWlnaHQiOiA2MDAKKyAgfSwKKyAg
ImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICJtZW1vcnkiOiAwLAorICAiY29tcG9zaXRlZEJvdW5k
cyI6IHsKKyAgICAieCI6IDAsCisgICAgInkiOiAwLAorICAgICJ3aWR0aCI6IDc4NSwKKyAgICAi
aGVpZ2h0IjogMzA5NgorICB9LAorICAiY2hpbGRMYXllcnMiOiBbCisgICAgeworICAgICAgImxh
eWVySWQiOiAiMC4yIiwKKyAgICAgICJib3VuZHMiOiB7CisgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgInkiOiAwLAorICAgICAgICAid2lkdGgiOiA3ODUsCisgICAgICAgICJoZWlnaHQiOiA2MDAK
KyAgICAgIH0sCisgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCisgICAgICAiY2hpbGRMYXll
cnMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAibGF5ZXJJZCI6ICIwLjMiLAorICAgICAgICAg
ICJib3VuZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisg
ICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAg
ICAgICAgfSwKKyAgICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgImNo
aWxkTGF5ZXJzIjogW10KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICJsYXllcklk
IjogIjAuNCIsCisgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAg
ICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAg
ImhlaWdodCI6IDUwCisgICAgICAgICAgfSwKKyAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1
ZSwKKyAgICAgICAgICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgImNvbXBvc2l0ZWRCb3Vu
ZHMiOiB7CisgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAieSI6IDAsCisgICAgICAg
ICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgIH0s
CisgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAibGF5ZXJJZCI6ICIwLjUiLAorICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAg
ICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAg
IndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAi
bWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAg
ICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAg
ICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICB9
CisgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgImxheWVySWQi
OiAiMC42IiwKKyAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAg
ICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAg
ImhlaWdodCI6IDEwMAorICAgICAgICAgIH0sCisgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRy
dWUsCisgICAgICAgICAgIm1lbW9yeSI6IDQwMDAwLAorICAgICAgICAgICJjb21wb3NpdGVkQm91
bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAgImhlaWdodCI6IDEwMAorICAgICAgICAg
IH0sCisgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAibGF5ZXJJZCI6ICIwLjciLAorICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAg
ICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAg
ICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogewor
ICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAg
ICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAg
ICB9CisgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgImxheWVy
SWQiOiAiMC44IiwKKyAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAg
ICJoZWlnaHQiOiAwCisgICAgICAgICAgfSwKKyAgICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFs
c2UsCisgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICJsYXllcklkIjogIjAuOSIsCisgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAg
ICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICJ3aWR0aCI6
IDAsCisgICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAgICAgIH0sCisgICAgICAgICAgImlz
Q29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAibGF5ZXJJZCI6ICIwLjEwIiwKKyAgICAgICAgICAi
Ym91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgIndpZHRoIjogMzcwLAorICAgICAgICAgICAgImhlaWdodCI6IDMwOTYKKyAgICAg
ICAgICB9LAorICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICJtZW1v
cnkiOiA0NTgyMDgwLAorICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAg
ICAgIngiOiAwLAorICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogMzcw
LAorICAgICAgICAgICAgImhlaWdodCI6IDMwOTYKKyAgICAgICAgICB9LAorICAgICAgICAgICJj
aGlsZExheWVycyI6IFtdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAibGF5ZXJJ
ZCI6ICIwLjExIiwKKyAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAg
ICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICB9LAorICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0
cnVlLAorICAgICAgICAgICJtZW1vcnkiOiAxMDAwMCwKKyAgICAgICAgICAiY29tcG9zaXRlZEJv
dW5kcyI6IHsKKyAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICJ5IjogMCwKKyAgICAg
ICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAg
fSwKKyAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICB9CisgICAgICBdCisgICAg
fQorICBdCit9CisKKz09PSBPYnRhaW4gdGhlIG5vZGUgaWQgZm9yIHRoZSBsYXllciB3aXRoIGlk
IDAuMTEgPT09CisKK1BBU1MKKworPT09IEdldCBhdHRyaWJ1dGVzIGZvciBub2RlIHdpdGggaWQg
OSA9PT0KKworUEFTUworCis9PT0gVGVzdCBjb21wbGV0ZSwgYWxsIGV4cGVjdGVkIGNvbmRpdGlv
bnMgbWV0ID09PQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
bGF5ZXItdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRy
ZWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMDliNGI2Yzc3ZjIxMGUzNGI4NzM1Mjk0MzRhMjA0OGNiYmM3
NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xh
eWVyLXRyZWUuaHRtbApAQCAtMCwwICsxLDI2NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gYWRkQ29tcG9zaXRlZExheWVyKCkKK3sKKyAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGVsZW1l
bnQuY2xhc3NOYW1lID0gImNvbXBvc2l0ZWQiOworICAgIGVsZW1lbnQuaWQgPSAibGFzdC1lbGVt
ZW50IjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworfTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgLy8gVmFyaWFibGVzIHVzZWQgdGhyb3VnaG91dCB0aGUgdGVz
dC4KKyAgICB2YXIgaW5pdGlhbExheWVyVHJlZTsKKyAgICB2YXIgZXZlbnRzQ291bnQgPSAwOwor
CisgICAgLy8gUmVnaXN0ZXIgZXZlbnQgaGFuZGxlciBmb3IgbGF5ZXJUcmVlRGlkQ2hhbmdlIGV2
ZW50LgorICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVyWyJMYXllclRyZWUubGF5ZXJUcmVl
RGlkQ2hhbmdlIl0gPSBmdW5jdGlvbiAobWVzc2FnZU9iamVjdCkgeworICAgICAgICBldmVudHND
b3VudCsrOworICAgIH07CisKKyAgICAvLyBTdGFydCB0aGUgdGVzdC4KKyAgICBnZXREb2N1bWVu
dCgpOworICAgIAorICAgIGZ1bmN0aW9uIGdldERvY3VtZW50KCkKKyAgICB7CisgICAgICAgIC8v
IFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBkb2N1bWVudCBzbyB0aGF0IGxhdGVyIG9uIHdlIG1heSBn
ZXQgc2Vuc2libGUgbm9kZUlkcy4KKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAi
R2V0IHRoZSBEb2N1bWVudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLmdldERvY3VtZW50
IiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGVu
YWJsZUxheWVyVHJlZUFnZW50CisgICAgICAgIH0pOworICAgIH07CisgICAgCisgICAgZnVuY3Rp
b24gZW5hYmxlTGF5ZXJUcmVlQWdlbnQocmVzdWx0KQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVz
dCBmaXJzdCBlbmFibGUgdGhlIGxheWVyIHRyZWUgYWdlbnQgc28gdGhhdCB3ZSBtYXkgZ2V0IGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBSZW5kZXJMYXllciB0cmVlLgorICAgICAgICBzdGVwKHsKKyAg
ICAgICAgICAgIG5hbWU6ICJFbmFibGUgdGhlIExheWVyVHJlZSBhZ2VudCIsCisgICAgICAgICAg
ICBjb21tYW5kOiAiTGF5ZXJUcmVlLmVuYWJsZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7
fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnZXRJbml0aWFsTGF5ZXJUcmVlCisgICAgICAgIH0p
OworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRJbml0aWFsTGF5ZXJUcmVlKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCB0aGUgaW5pdGlhbCBs
YXllciB0cmVlIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUuZ2V0TGF5ZXJUcmVl
IiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdv
dEluaXRpYWxMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdv
dEluaXRpYWxMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgLy8gU2F2ZSB0aGlzIGxh
eWVyIHRyZWUgZm9yIGxhdGVyIGNvbXBhcmlzb24uCisgICAgICAgIGluaXRpYWxMYXllclRyZWUg
PSByZXN1bHQubGF5ZXJUcmVlOworICAgICAgICAvLyBEdW1wIHRoZSBmaXJzdCBsYXllciB0cmVl
IGFzIHBhZ2UgbG9hZGVkLgorICAgICAgICBkdW1wT2JqZWN0KGluaXRpYWxMYXllclRyZWUpOwor
ICAgICAgICAvLyBOb3cgbWVzc2FnZSB0aGUgcGFnZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBs
YXllci4KKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiTWVzc2FnZSB0aGUgcGFn
ZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllciIsCisgICAgICAgICAgICBjb21tYW5kOiAi
UnVudGltZS5ldmFsdWF0ZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ICJleHByZXNzaW9u
IjogImFkZENvbXBvc2l0ZWRMYXllcigpIiB9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdldE1v
ZGlmaWVkTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRN
b2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICBzdGVwKHsKKyAgICAgICAg
ICAgIG5hbWU6ICJHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUiLAorICAgICAgICAgICAgY29t
bWFuZDogIkxheWVyVHJlZS5nZXRMYXllclRyZWUiLAorICAgICAgICAgICAgcGFyYW1ldGVyczog
e30sCisgICAgICAgICAgICBjYWxsYmFjazogZ290TW9kaWZpZWRMYXllclRyZWUKKyAgICAgICAg
fSk7CisgICAgfTsKKworICAgIHZhciBsYXllckNvdW50ID0gMDsKKworICAgIGZ1bmN0aW9uIGdv
dE1vZGlmaWVkTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIC8vIER1bXAgdGhlIGZp
cnN0IGxheWVyIHRyZWUgYXMgcGFnZSBsb2FkZWQuCisgICAgICAgIGR1bXBPYmplY3QocmVzdWx0
LmxheWVyVHJlZSk7CisgICAgICAgIC8vIE5vdyBmaW5kIHRoZSBpZCBvZiB0aGUgbmV3bHkgaW5z
ZXJ0ZWQgbGF5ZXIuCisgICAgICAgIHZhciBtdXRhdGlvbnMgPSBsYXllclRyZWVNdXRhdGlvbnMo
aW5pdGlhbExheWVyVHJlZSwgcmVzdWx0LmxheWVyVHJlZSk7CisgICAgICAgIHZhciBsYXN0SWQg
PSBtdXRhdGlvbnMuYWRkaXRpb25zWzBdOworICAgICAgICAvLworICAgICAgICBzdGVwKHsKKyAg
ICAgICAgICAgIG5hbWU6ICJPYnRhaW4gdGhlIG5vZGUgaWQgZm9yIHRoZSBsYXllciB3aXRoIGlk
ICIgKyBsYXN0SWQsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLm5vZGVJZEZvckxh
eWVySWQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczogeyAibGF5ZXJJZCI6IGxhc3RJZCB9LAor
ICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE5vZGVJZEZvckxhc3RMYXllcgorICAgICAgICB9KTsK
KyAgICB9OworCisgICAgZnVuY3Rpb24gZ290Tm9kZUlkRm9yTGFzdExheWVyKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHZhciBpZCA9IHJlc3VsdC5ub2RlSWQ7CisgICAgICAgIC8vIG5vdyBnZXQg
dGhlIGF0dHJpYnV0ZXMgZm9yIHRoaXMgbm9kZQorICAgICAgICBzdGVwKHsKKyAgICAgICAgICAg
IG5hbWU6ICJHZXQgYXR0cmlidXRlcyBmb3Igbm9kZSB3aXRoIGlkICIgKyBpZCwKKyAgICAgICAg
ICAgIGNvbW1hbmQ6ICJET00uZ2V0QXR0cmlidXRlcyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJz
OiB7ICJub2RlSWQiOiBpZCB9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE5vZGVBdHRyaWJ1
dGVzCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnb3ROb2RlQXR0cmlidXRl
cyhyZXN1bHQpCisgICAgeworICAgICAgICAvLyBHZXQgdGhlIGF0dHJpYnV0ZXMgYXMgYSBkaWN0
aW9uYXJ5LgorICAgICAgICB2YXIgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNEaWN0aW9uYXJ5RnJv
bUFycmF5KHJlc3VsdC5hdHRyaWJ1dGVzKTsKKyAgICAgICAgLy8gQ2hlY2sgd2UgaGF2ZSB0aGUg
ZXhwZWN0ZWQgaWQuCisgICAgICAgIGlmICghYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eSgiaWQi
KSB8fCBhdHRyaWJ1dGVzLmlkICE9ICJsYXN0LWVsZW1lbnQiKQorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIkZBSUw6IERpZCBub3Qgb2J0YWluIHRoZSBleHBlY3RlZCBlbGVtZW50IGZv
ciB0aGUgbGFzdCBpbnNlcnRlZCBsYXllci4iKTsKKyAgICAgICAgLy8gQWxsIGRvbmUuCisgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCisg
ICAgeworICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGdvdCBsYXllclRyZWVEaWRDaGFuZ2UgZXZl
bnRzLgorICAgICAgICBpZiAoIWV2ZW50c0NvdW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkZBSUw6IERpZCBub3QgcmVjZWl2ZSBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnRzLiIp
OworICAgICAgICAvLyBFdmVyeXRoaW5nIHdlbnQgT0sgaWYgd2UgZ290IHRoaXMgZmFyLgorICAg
ICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG49PT0gVGVzdCBjb21w
bGV0ZSwgYWxsIGV4cGVjdGVkIGNvbmRpdGlvbnMgbWV0ID09PSIpOworICAgICAgICAvLyBBbGwg
ZG9uZS4KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9OworCisg
ICAgLy8gVXRpbGl0aWVzCisKKyAgICBmdW5jdGlvbiBsYXllclRyZWVNdXRhdGlvbnMob2xkTGF5
ZXJUcmVlLCBuZXdMYXllclRyZWUpCisgICAgeworICAgICAgICB2YXIgb2xkS2V5cyA9IE9iamVj
dC5rZXlzKGZsYXR0ZW5lZExheWVyVHJlZShvbGRMYXllclRyZWUpKTsKKyAgICAgICAgdmFyIG5l
d0tleXMgPSBPYmplY3Qua2V5cyhmbGF0dGVuZWRMYXllclRyZWUobmV3TGF5ZXJUcmVlKSk7Cisg
ICAgICAgIC8vCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBhZGRpdGlvbnM6IG5ld0tl
eXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG9sZEtl
eXMuaW5kZXhPZihrZXkpID09IC0xKTsKKyAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgcmVt
b3ZhbHM6IG9sZEtleXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKG5ld0tleXMuaW5kZXhPZihrZXkpID09IC0xKTsKKyAgICAgICAgICAgIH0pCisgICAg
ICAgIH07CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGZsYXR0ZW5lZExheWVyVHJlZShsYXllclRy
ZWUpCisgICAgeworICAgICAgICB2YXIgbGF5ZXJCeUlkcyA9IHt9OworICAgICAgICAvLyBSZWN1
cnNlIHRocm91Z2ggdGhlIHRyZWUgdG8gYXNzZW1ibGUgYSBmbGF0IGxpc3Qgb2YgSURzLgorICAg
ICAgICAoZnVuY3Rpb24gcmVjdXJzZSAobGF5ZXIpIHsKKyAgICAgICAgICAgIGxheWVyQnlJZHNb
bGF5ZXIubGF5ZXJJZF0gPSBsYXllcjsKKyAgICAgICAgICAgIGlmIChsYXllci5jaGlsZExheWVy
cykKKyAgICAgICAgICAgICAgICBsYXllci5jaGlsZExheWVycy5mb3JFYWNoKHJlY3Vyc2UpOwor
ICAgICAgICB9KShsYXllclRyZWUpOworCisgICAgICAgIHJldHVybiBsYXllckJ5SWRzOworICAg
IH07CisKKyAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzRGljdGlvbmFyeUZyb21BcnJheShhdHRyaWJ1
dGVzKQorICAgIHsKKyAgICAgICAgdmFyIGRpY3Rpb25hcnkgPSB7fQorICAgICAgICBmb3IgKHZh
ciBpID0gMCwgY291bnQgPSBhdHRyaWJ1dGVzLmxlbmd0aDsgaSA8IGNvdW50OyBpICs9IDIpIHsK
KyAgICAgICAgICAgIGRpY3Rpb25hcnlbYXR0cmlidXRlc1tpXV0gPSBhdHRyaWJ1dGVzW2kgKyAx
XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGljdGlvbmFyeTsKKyAgICB9OworCisgICAg
ZnVuY3Rpb24gZHVtcE9iamVjdChvYmopCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiXG4iICsgSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAnICAnKSk7CisgICAgfTsKKworICAg
IGZ1bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJc
bj09PSAiICsgdGVzdC5uYW1lICsgIiA9PT1cbiIpCisgICAgICAgIEluc3BlY3RvclRlc3Quc2Vu
ZENvbW1hbmQodGVzdC5jb21tYW5kLCB0ZXN0LnBhcmFtZXRlcnMsIGZ1bmN0aW9uKG1lc3NhZ2VP
YmplY3QpIHsKKyAgICAgICAgICAgIGlmIChjaGVja0ZhaWx1cmUodGVzdC5uYW1lLCBtZXNzYWdl
T2JqZWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHBhc3ModGVz
dCk7CisgICAgICAgICAgICB0ZXN0LmNhbGxiYWNrKG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKKyAg
ICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGNoZWNrRmFpbHVyZShuYW1lLCBtZXNz
YWdlT2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlT2JqZWN0Lmhhc093blByb3Bl
cnR5KCdlcnJvcicpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZU9iamVjdC5lcnJvci5tZXNzYWdlICsgIiAo
IiArIG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSArICIpIik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICBm
dW5jdGlvbiBwYXNzKHRlc3QpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFT
UyIpOworICAgIH07Cit9OworCisvLyBXYWl0IHVudGlsIHRoZSBET00gaXMgcmVhZHkgdG8gc3Rh
cnQgdGhlIHRlc3QuCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIs
IGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0Pgor
PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIAorICBkaXYgeworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgfQorICAgICAgCisgIC5yZWd1
bGFyIHsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibGFjazsKKyAgfQorCisgIC5jb21wb3NpdGVkIHsKKyAgICB0b3A6IDI1cHg7
CisgICAgbGVmdDogMjVweDsKKyAgICB3aWR0aDogNTBweDsKKyAgICBoZWlnaHQ6IDUwcHg7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNs
YXRlWigwKTsKKyAgfQorICAgICAgCisgIC5vZmZzZXQgeworICAgIGxlZnQ6IDIwMHB4OworICAg
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICB9CisKKyAgYnV0dG9uIHsKKyAg
ICBtYXJnaW4tbGVmdDogMjBweDsKKyAgICBtYXJnaW4tdG9wOiAxMjBweDsKKyAgfQorICAgICAg
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKyAgICA8ZGl2IGNsYXNzPSJyZWd1bGFyIj48
L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPgorICAgICAgPGRpdiBjbGFzcz0i
Y29tcG9zaXRlZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJyZWd1bGFy
IG9mZnNldCI+CisgICAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj48L2Rpdj4KKyAgICA8L2Rp
dj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmM1NzgxN2U4YTM0ZThjMTgyZjJmNTM5ZjMwMTA1MTFl
ZDQ4MGE2ZS4uODBmNmEwNjY3ODc1NGYwMjI2NGFhNGRhYTBiOTJhOTE5MGJlNWQ4ZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC00MTAz
LDYgKzQxMDMsOSBAQCB3ZWJraXQub3JnL2IvMTAxMjUzIFsgTGlvbiBEZWJ1ZyBdIGlldGVzdGNl
bnRlci9jc3MzL2JvcmRlcnNiYWNrZ3JvdW5kcy9iYWNrZ3JvdQogIyBIYXMgYmVlbiBmbGFreSBz
aW5jZSBhdCBsZWFzdCByMTMzMDQzCiB3ZWJraXQub3JnL2IvMTAxMjI5IGluc3BlY3Rvci1wcm90
b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29ya2VyLmh0bWwgWyBGYWlsdXJlIFBhc3Mg
Q3Jhc2ggXQogCisjIExheWVyIHRyZWUgaW5zcGVjdGlvbiB0ZXN0IG9ubHkgcGFzc2VzIG9uIE1h
Yword2Via2l0Lm9yZy9iLzEwMzUxMyBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1s
IFsgU2tpcCBdCisKICMgU3RhcnRlZCBmYWlsaW5nIHdpdGggcjEzMzIyNC0xMzMyMjYgKHByb2Jh
Ymx5IDEzMzIyNCkKIHdlYmtpdC5vcmcvYi8xMDEyNTUgZmFzdC9yZXBhaW50L2Jsb2NrLXNlbGVj
dGlvbi1nYXAtaW4tdGFibGUtY2VsbC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzVjYjJmOTA5MDE0MjVl
NDgwMjI2OWFjM2U2MGZkMjE2YjNlYTUxOS4uNzgyYjkyNWQyNTIxODY2NGYwYjhlNGE0YzI3MTIz
ZmFhN2JlZDk1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTE2NDgsNiArMTY0OCw5IEBAIHdlYmtpdC5vcmcvYi8xMDA4NTUgaWV0ZXN0Y2VudGVyL2Nz
czMvdGV4dC90ZXh0c2hhZG93LTAwOC5odG0gWyBJbWFnZU9ubHlGYWlsdXJlCiB3ZWJraXQub3Jn
L2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29y
a2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyLXRlcm1pbmF0ZS1kZWRpY2F0ZWQtd29ya2VyLXdoaWxlLXBhdXNlZC5odG1sIFsg
U2tpcCBdCiAKKyMgTGF5ZXIgdHJlZSBpbnNwZWN0aW9uIHRlc3Qgb25seSBwYXNzZXMgb24gTWFj
Cit3ZWJraXQub3JnL2IvMTAzNTEzIGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwg
WyBTa2lwIF0KKwogIyBOZXcgbWVkaWEgdGVzdCBpbnRyb2R1Y2VkIGluIHIxMzM2NjAgZmFpbHMu
CiB3ZWJraXQub3JnL2IvMTAxNDM5IG1lZGlhL3Byb2dyZXNzLWV2ZW50cy1nZW5lcmF0ZWQtY29y
cmVjdGx5Lmh0bWwgWyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA3NmExYTI3YTQwZmZiYzQ5MmNiNjMwMjQ5MWEwYmMyYjYyYTJhMjkz
Li5jYTNhNjgzOTQ3ZGY3MmRlMDNlOWU5ZjU4NjAxZmYyNmQ0YzNjMjQ4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTM1Nyw2ICsxMzU3LDkgQEAgd2Vi
a2l0Lm9yZy9iLzEwMDQyNCBlZGl0aW5nL3NlbGVjdGlvbi91c2VyLXNlbGVjdC1hbGwtc2VsZWN0
aW9uLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9yLXByb3Rv
Y29sL2RlYnVnZ2VyLXBhdXNlLWRlZGljYXRlZC13b3JrZXIuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzEwMDg0NiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItdGVybWluYXRlLWRlZGlj
YXRlZC13b3JrZXItd2hpbGUtcGF1c2VkLmh0bWwgWyBTa2lwIF0KIAorIyBMYXllciB0cmVlIGlu
c3BlY3Rpb24gdGVzdCBvbmx5IHBhc3NlcyBvbiBNYWMKK3dlYmtpdC5vcmcvYi8xMDM1MTMgaW5z
cGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbCBbIFNraXAgXQorCiB3ZWJraXQub3JnL2Iv
OTUyOTkgZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJr
aXQub3JnL2IvOTUyOTkgZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi1pbWFnZS1kb2N1bWVu
dC5odG1sIFsgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDQxYzRjZDMzYzZhYjUyMDhlYzRmOWQ0ZDAzMWI5ZjViYjdhOWI4MDYuLjEyYmM2
MWU1NjA0NDc2NjE5YzIzMzkxYTBhNDJjOGM1MThmZDEzMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjM3MSw2ICsyMzcxLDkgQEAgd2Via2l0Lm9yZy9i
LzEwMTUzOSBlZGl0aW5nL2V4ZWNDb21tYW5kL3N3aXRjaC1saXN0LXR5cGUtd2l0aC1vcnBoYW5l
ZC1saS5odG1sIFsKIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9yLXByb3RvY29sL2RlYnVn
Z2VyLXBhdXNlLWRlZGljYXRlZC13b3JrZXIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEw
MDg0NiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItdGVybWluYXRlLWRlZGljYXRlZC13b3Jr
ZXItd2hpbGUtcGF1c2VkLmh0bWwgWyBTa2lwIF0KIAorIyBMYXllciB0cmVlIGluc3BlY3Rpb24g
dGVzdCBvbmx5IHBhc3NlcyBvbiBNYWMKK3dlYmtpdC5vcmcvYi8xMDM1MTMgaW5zcGVjdG9yLXBy
b3RvY29sL2xheWVyLXRyZWUuaHRtbCBbIFNraXAgXQorCiAjIFFUIHN0aWxsIGhhcyB0aGUgQ0Mg
dG9nZ2xlIGJ1dHRvbiwgbm90IHRoZSBtZW51IG9mIHRyYWNrcy4KIHdlYmtpdC5vcmcvYi8xMDE2
NzAgbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWwgWyBTa2lwIF0K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1ZTk1NjM0
MTUzNzU2MTllNzIxYTUxMjk1NGFjMjI4NTYwNDJmZmQ0Li5lNGRiYjdhMzBmYjc5YTBmYTFhYjAz
NjhmMjUyN2U4OTYxNjBhOTk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVj
dGF0aW9ucwpAQCAtMjQyOCw2ICsyNDI4LDkgQEAgZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlv
bi1pbWFnZS1kb2N1bWVudC5odG1sCiB3ZWJraXQub3JnL2IvMTAwODQ2IGluc3BlY3Rvci1wcm90
b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtp
dC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXRlcm1pbmF0ZS1kZWRp
Y2F0ZWQtd29ya2VyLXdoaWxlLXBhdXNlZC5odG1sIFsgU2tpcCBdCiAKKyMgTGF5ZXIgdHJlZSBp
bnNwZWN0aW9uIHRlc3Qgb25seSBwYXNzZXMgb24gTWFjCit3ZWJraXQub3JnL2IvMTAzNTEzIGlu
c3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwgWyBTa2lwIF0KKwogIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTE3CiBmYXN0L3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LXJlY3Vyc2l2ZS1zeW5jLWV2ZW50Lmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177472</attachid>
            <date>2012-12-04 06:02:55 -0800</date>
            <delta_ts>2012-12-04 14:29:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121204150018.patch</filename>
            <type>text/plain</type>
            <size>60301</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjYjc1NTQxYzlhYjU4
NTA0NWM5N2I5Mzc5YjExMTQ0ZDJmZGFjMS4uMTMyZGFhNmQ3ODEzYTg2ZTNhM2JmMjUxZmYyMWYy
OWI4NzkyZGE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTEyLTA0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2Ugd2l0aCBXZWJDb3JlIHRvIGFjY2VzcworICAgICAgICBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFja2VkIGJ5Cisg
ICAgICAgIHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
IGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVBZ2VudCB3aGlj
aCB3aWxsCisgICAgICAgIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIGNoYW5nZXMgdG8gdGhlIHJl
bmRlciBsYXllciB0cmVlIHZpYSBhIG5ldyBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnQsIHByb3Zp
ZGluZyBhbiBvYmplY3QKKyAgICAgICAgY29udGFpbmluZyB0aGUgZW50aXJlIGhpZXJhcmNoeSBv
ZiBSZW5kZXJMYXllcnMgZm9yIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuIFRoaXMgaGllcmFyY2h5
IGNhbiBiZSBxdWVyaWVkIGF0IGFueQorICAgICAgICB0aW1lIHVzaW5nIHRoZSAuZ2V0TGF5ZXJU
cmVlKCkgbWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudC4gRmluYWxseSwgdGhlIExheWVyVHJl
ZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXllcklkKCkKKyAgICAgICAgbWV0aG9k
IGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBS
ZW5kZXJMYXllciB3aXRoIHRoZSBwcm92aWRlZCBsYXllciBpZC4KKyAgICAgICAgCisgICAgICAg
IEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFzIGJl
ZW4gY2hhbmdlZCBzdWNoIHRoYXQgaW4gaXRzIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKKyAg
ICAgICAgbWV0aG9kIHdlIGNhbGwgdGhlIGxheWVyVHJlZURpZENoYW5nZSBtZXRob2Qgb24gdGhl
IEluc3BlY3RvckxheWVyVHJlZUFnZW50IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVl
Lmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjogRGVmaW5lIG5ldyB0eXBlcyBJbnRSZWN0ICh4LCB5LCB3aWR0aCwgaGVpZ2h0
KSBhbmQgTGF5ZXIsIHdoaWNoIGhvbGRzIHRoZSBpbmZvcm1hdGlvbiBmb3IgYQorICAgICAgICBS
ZW5kZXJMYXllciAobGF5ZXJJZCwgYm91bmRzLCBpc0NvbXBvc2l0ZWQsIG1lbW9yeSwgY29tcG9z
aXRlZEJvdW5kcykgYW5kIGl0cyBjaGlsZHJlbiAoY2hpbGRMYXllcnMpLiBXZSBhbHNvIGRlZmlu
ZSB0aGUKKyAgICAgICAgbWV0aG9kcyBvZiB0aGUgTGF5ZXJUcmVlQWdlbnQgb2JqZWN0IChlbmFi
bGUsIGRpc2FibGUsIGdldExheWVyVHJlZSwgbm9kZUlkRm9yTGF5ZXJJZCkgYW5kIHRoZSBsYXll
clRyZWVEaWRDaGFuZ2UgZXZlbnQgaXQgIAorICAgICAgICBmaXJlcy4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQ
YXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKTogTmV3IG1ldGhvZCBmYWNpbGl0YXRpbmcgcHVz
aGluZyB0aGUgbm9kZSBhc3NvY2lhdGVkIHdpdGggCisgICAgICAgIGEgZ2l2ZW4gUmVuZGVyTGF5
ZXIgdG8gdGhlIGZyb250LWVuZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3ll
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZUFnZW50U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKTog
QnVpbGQgdGhlIGVudGlyZSBoaWVyYXJjaHkgb2YgUmVuZGVyTGF5ZXJzIGZyb20gdGhlIHByb3Zp
ZGVkIAorICAgICAgICBSZW5kZXJMYXllci4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6bm9kZUlkRm9yTGF5ZXJJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0
cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKEluc3RydW1l
bnRpbmdBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6aW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0Fn
ZW50czo6c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6IENhbGwgdGhlIGxheWVyVHJlZURp
ZENoYW5nZSBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50IHZpYSB0aGUgCisgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbiB0byBpbmZvcm0gdGhlIGZyb250LWVuZCB0aGF0IHRoZSBS
ZW5kZXJMYXllciBoaWVyYXJjaHkgaGFzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25Db21w
b3NpdGVkKTogQ2FsbCB0aGUgcmVuZGVyTGF5ZXJEZXN0cm95ZWQgbWV0aG9kIG9uIHRoZSBMYXll
clRyZWVBZ2VudCB2aWEgCisgICAgICAgIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gdG8g
dW5iaW5kIHRoZSBsYXllciB0aGF0IGlzIGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIChSZW5kZXJMYXllckNvbXBv
c2l0b3IpOgorCiAyMDEyLTEyLTA0ICBNaWNoYWVsIFBydWV0dCAgPG1pY2hhZWxANjhrLm9yZz4K
IAogICAgICAgICBbSlNDXSBHZW5lcmF0ZSB2aXNpdENoaWxkcmVuKCkgZm9yIHVuY3VzdG9taXpl
ZCBFdmVudFRhcmdldCBpbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDk1MGEzNjA5
YTdmYTBhOTBjNTUzOTU0ZDMzNmNkMjI3ODcxMGMwZTUuLmVjMjI0YTI3ZDRlNzI3MWEzYjg1NWMw
ODRiNzM3MmFhNGI5NjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTk5LDYgKzE1OTks
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rvcnku
Y3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDVhZjdlZjU2MWMwN2ZkYjkyOGU4NDQ1M2IyYmU4ZmM3ZTQ3YzYwNjAuLmI2ZDRiMWEyMWExMDY1
NGZiZGUzOTk4NzA2ZDBjOGEzODZiZTRhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMzc0Miw2ICszNzQyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyOTkwMjFjOWUyZmMz
NmVjMmFiYzhjNmRlNWQ0NWE4ZDIwOGE0NGRhLi44NjYzMDAyMTY0MTgzZWZiZDBlNmQ2NmJhNmY1
ZjZlOTNlOTk5OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTc3Myw2ICs3NzMsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBcCkBAIC0xOTIxLDYgKzE5MjIsNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3MGYuLmIyMGU1Y2JmMmY1ZWQ5
OTdhZDRlYzQzYzkzOWYwZWM2ZWVkNjM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4ODIsNiAr
Mjg4Miw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAor
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggZTk5NDgwYzlkNDAxODI3Y2NiNDJkOWEyN2E4ZDZlNzRlOGU0
NzEzOC4uMzMyMTk1MWNhMzJiODRhYzQ1MzMxY2QwZjE1NjRlYzVmMmVmMWM2NCAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc1NDcwLDYgKzc1
NDcwLDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAiCisJCQkJPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIgogCQkJCT4KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3MGZlMzc4MzRmNzllNmNmMWNjZDFhNTRjNWRlZGQyNGU5
NDlhOGZiLi5kYTNiNTUzYjM2ZmRmMzcyMjM5ZmFmNDM5M2RlYzk4MmZiZmMwNGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
OTEwLDYgKzE5MTAsOCBAQAogCQk3MTkwNERFQTE1NkE2MzNBMDAxRTFCQTUgLyogRE9NU1ZHVmll
d1NwZWNJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1Zp
ZXdTcGVjSW50ZXJuYWwuaCAqLzsgfTsKIAkJNzFBNTdERjExNTRCRTI1QzAwMDlEMTIwIC8qIFNW
R1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzFBNTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3Bw
ICovOyB9OwogCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERjAx
NTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNzFCMUUxMjUx
NjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIxRTEyNDE2NDA0OENDMDBCMTg4
MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLzsgfTsKKwkJNzFCMUUxMjYxNjQwNDkx
QTAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgwQSAv
KiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi87IH07CiAJCTcxQ0M3QTIwMTUyQTBCRkUw
MDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBT
VkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDExNTY4MTk3NjAwODYy
MjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MURDQjZGRjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5k
UGFuLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDIxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFu
ZFBhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFE
Q0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovOyB9OwpAQCAtOTE5
Myw2ICs5MTk1LDggQEAKIAkJNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1ZpZXdT
cGVjSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyog
U1ZHUGF0aFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdQYXRoVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFB
NTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIx
RTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJBMEJGRTAwOUVFQUY5IC8qIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxRENCNkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdab29tQW5kUGFuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8q
IEpTU1ZHWm9vbUFuZFBhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NW
R1pvb21BbmRQYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODI3LDYgKzE0
ODMxLDggQEAKIAkJCQlBQTczMTgzQzE1OTI1NUI5MDBBOTNFNkUgLyogSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGUuY3BwICovLAogCQkJCUFBNzMxODNEMTU5MjU1QjkwMEE5M0U2RSAvKiBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZS5oICovLAogCQkJCUFBOTAzMEZFMTU3RTE2QTAwMDI3NjI0
NyAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcyAqLywKKwkJCQk3MUIxRTEy
MzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovLAorCQkJ
CTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oICov
LAogCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
ICovLAogCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
aCAqLywKIAkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmlkbCAqLywKQEAgLTIzMzQ0LDYgKzIzMzUwLDcgQEAKIAkJCQk4NTAyQUI1NDBBRDQzOEMwMDAz
Nzg1NDAgLyogRE9NU1ZHRkVGdW5jR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJB
Qjk4MEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxlbWVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTAyQUI1NjBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5j
UkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjFFMTI1MTY0MDQ4RjcwMEIxODgwQSAv
KiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFCOTkw
QUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY1JFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDJBQjU4MEFENDM4QzAwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjlBMEFENDM5NEUwMDM3ODU0
MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjIwNSw2ICsyNjIxMiw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3MUIx
RTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFi
c3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjlDMTZFMTMwMEMyRTIwMDJE
Nzk0RSAvKiBBY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNDU0NTM5ZjY2YTlmYmQ1ZTJlM2Uw
YWI3Y2Y0NDJjNmY4NzQ2OTIxOC4uYWQyNTA1NTM5MTZhNDBmNjA4ZjVjM2VlNWQwMWM4MGI3MjNm
OWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzI0Miw1
ICszMjQyLDcyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMi
OiBbXQorICAgIH0sCisgICAgeworICAgICAgICAiZG9tYWluIjogIkxheWVyVHJlZSIsCisgICAg
ICAgICJoaWRkZW4iOiB0cnVlLAorICAgICAgICAidHlwZXMiOiBbCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgImlkIjogIkxheWVySWQiLAorICAgICAgICAgICAgICAgICJ0eXBlIjog
InN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBSZW5kZXJM
YXllciBpZGVudGlmaWVyLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgImlkIjogIkludFJlY3QiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlLiIsCisgICAg
ICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHggcG9zaXRpb24u
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJpbnRlZ2Vy
IiwgImRlc2NyaXB0aW9uIjogIlRoZSB5IHBvc2l0aW9uLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
VGhlIHdpZHRoIG1ldHJpYy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVp
Z2h0IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGVpZ2h0IG1ldHJp
Yy4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJpZCI6ICJMYXllciIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJv
dXQgYSBjb21wb3NpdGluZyBsYXllci4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVySWQiLCAiJHJlZiI6ICJMYXll
cklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSB1bmlxdWUgaWQgZm9yIHRoaXMgbGF5ZXIuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdW5kcyIsICIkcmVmIjogIkludFJlY3Qi
LCAiZGVzY3JpcHRpb24iOiAiQm91bmRzIG9mIHRoZSBsYXllci4iIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiaXNDb21wb3NpdGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNj
cmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVyIGlzIGNvbXBvc2l0ZWQuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9yeSIsICJ0eXBlIjogImludGVn
ZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRXN0aW1hdGVkIG1lbW9yeSB1
c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNv
bXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2YgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIuIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNoaWxkTGF5ZXJzIiwgInR5cGUiOiAiYXJyYXki
LCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIkxheWVyIiB9LCAiZGVzY3Jp
cHRpb24iOiAiQ2hpbGQgbGF5ZXJzLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgXSwKKyAgICAgICAgImNvbW1hbmRzIjogWworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkVuYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0aW9uLiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGNvbXBvc2l0aW5nIHRyZWUg
aW5zcGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICJuYW1lIjogImdldExheWVyVHJlZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJldHVybnMgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBjdXJyZW50IHBhZ2Uu
IiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJsYXllclRyZWUiLCAiJHJlZiI6ICJMYXllciIsICJkZXNjcmlwdGlvbiI6ICJMYXll
ciB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIgfQorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAibm9kZUlkRm9yTGF5ZXJJZCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJl
dHVybnMgdGhlIG5vZGUgaWQgZm9yIGEgZ2l2ZW4gbGF5ZXIgaWQuIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllcklk
IiwgIiRyZWYiOiAiTGF5ZXJJZCIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwg
IiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbm9kZSBpZCBmb3IgdGhl
IGdpdmVuIGxheWVyIGlkLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiCisgICAgICAgICAgICB9CisgICAgICAg
IF0KICAgICB9XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJ
bk9uZS5jcHAKaW5kZXggZDE5YWQyZTBhMDIzYjk5YTg2NDQ1NjdhMzE0Zjc0YTFkZmY3MDcxZi4u
MDMwMWIxY2NhZGE1MjUzZjBlOWFiZTVlOGIxODY5NjFmODBhOTBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC01OCw2ICs1OCw3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAi
CisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmNwcCIKICNp
bmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIyNGNhMTcwYjk2NDcwY2E5ZTc2
MzdkOWQwNDk3ZmExZmUxMDhhOTQuLjc5YWQ4NmRiYjkyZTMyYzQ0M2M5N2RlYWQwNTBiYzcyZjUw
NWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKQEAgLTE1
MSw2ICsxNTIsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBh
Z2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgbV9hZ2VudHMuYXBw
ZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkp
OwogCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlKSk7CisKICAg
ICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKICAgICBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQobV9pbnNwZWN0
b3JBZ2VudAogICAgICAgICAsIGNvbnNvbGVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOWI4ODkwYWM2NjAyMWE5NDI5ZGI3NTk0
NzdhZGIxY2E0MDMxZmRiNS4uZmUwMWU3M2Y0NWE2MDU0ZTQ3ZTA4YjMwM2MyMGM0YWU5MWVlYTY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC01NjMsNiArNTYzLDExIEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRo
VG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgIHJldHVybiBtYXAtPmdldChub2RlVG9Q
dXNoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhGb3JSZW5kZXJM
YXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIHJl
dHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5ub2Rl
KCkpOworfQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKE5vZGUqIG5vZGUp
CiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGY3Y2M1ZmIxOGFk
MThmMTg5ZDk5NTI2OTNhYTU0ZTBkYjZiYWFlNjIuLjNjZmNlN2I2M2U4YjFjZDEyYzIyNTI1N2Y2
YjliM2E4MzRiMzg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xOTksNiArMjAwLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQorICAgIGludCBwdXNoTm9k
ZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAogcHJp
dmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVj
dG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJ
bnNwZWN0b3JPdmVybGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDBhY2YzMDM4YjZiZGQ1NDkzNmUwMGUy
ZDE0NjA4ZTgwMzliNjI4MzQuLmEzYTRjMTg5NWFiYmJmZjk5MzI0YWU3OWMxMjI5OTI4YTVkMGQ5
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9N
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
IgpAQCAtOTAwLDcgKzkwMSwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudAogICAgICAgICAg
ICAgZG9tU3RvcmFnZUFnZW50LT5jbGVhclJlc291cmNlcygpOwogICAgICAgICBpZiAoSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9N
QWdlbnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1bWVudChtYWluRnJhbWUtPmRv
Y3VtZW50KCkpOwotCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgICAgIGxheWVyVHJl
ZUFnZW50LT5yZXNldCgpOworI2VuZGlmCiAgICAgICAgIGluc3BlY3RvckFnZW50LT5kaWRDb21t
aXRMb2FkKCk7CiAgICAgfQogICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKQpAQCAtMTI4OCw2ICsx
MjkyLDIwIEBAIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJCiAgICAgcmV0dXJuIGRldmljZU9yaWVu
dGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPmxheWVyVHJlZURpZENo
YW5nZSgpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJE
ZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxheWVyRGVz
dHJveWVkKHJlbmRlckxheWVyKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBiYTQ0N2Y4ZDA2MzU1
ZmRjZmRkOTI0NTg3OWQzYjhlN2VmOThkN2QyLi42ZjY3ZGRiOGY2ZmFhY2EyYTRlOWQ3NjM5MGY4
MDdjYjE1ZjU1NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VSTDsKIGNs
YXNzIE5vZGU7CitjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0yNzgsNiArMjc5
LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJy
aWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVudGF0aW9uRGF0YSopOwogCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0YXRpYyB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQo
UGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7CkBA
IC00NTUsNiArNDYxLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRpYyBEZXZpY2VP
cmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb25JbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJMYXllckRlc3Ryb3ll
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYK
KwogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CiAjZW5kaWYKIH07CkBAIC0xNTIw
LDYgKzE1MzIsMjAgQEAgaW5saW5lIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW8KICAgICByZXR1cm4gZGV2aWNl
T3JpZW50YXRpb247CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZShQYWdl
KiBwYWdlKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIGxheWVyVHJl
ZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSogcGFnZSwg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
cGFnZSkpCisgICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVkSW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCByZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbGxlY3RpbmdIVE1MUGFyc2VF
cnJvcnMoUGFnZSogcGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMzNjOTgxNDhmYzhlZjVj
ZmQxZTUzYTE5MGUxOWJkNzBhNzI2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0wLDAgKzEsMjM0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFnZW50
LmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5j
bHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgTGF5ZXJUcmVlQWdlbnRTdGF0ZSB7CitzdGF0aWMgY29uc3Qg
Y2hhciBsYXllclRyZWVBZ2VudEVuYWJsZWRbXSA9ICJsYXllclRyZWVBZ2VudEVuYWJsZWQiOwor
fTsKKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBz
dGF0ZSwgUGFnZSogcGFnZSkKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JMYXll
clRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQorICAg
ICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBtX2Vu
YWJsZWQoZmFsc2UpCit7CisgICAgCit9CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQoreworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBt
X2Zyb250ZW5kID0gZnJvbnRlbmQtPmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAg
ICBkaXNhYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3Jl
KCkKK3sKKyAgICBlbmFibGUoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OnJlc2V0KCkKK3sKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7CisgICAgbV9p
ZFRvTGF5ZXIuY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihMYXllclRy
ZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQpKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFn
ZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KHRoaXMpOworfQorCit2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKK3sKKyAg
ICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IGZhbHNl
OworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5ZXJUcmVl
QWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCit7CisgICAgbV9mcm9udGVuZC0+bGF5ZXJUcmVl
RGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlbmRlckxh
eWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICB1bmJp
bmQocmVuZGVyTGF5ZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnZXRM
YXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5
ZXI+JiBvYmplY3QpCit7CisgICAgb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSb290TGF5ZXIoKTsK
K30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKCkKK3sKKyAgICByZXR1cm4g
YnVpbGRPYmplY3RGb3JMYXllcihtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50
UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5yb290UmVuZGVyTGF5ZXIoKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpidWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAg
ICBib29sIGlzQ29tcG9zaXRlZCA9IHJlbmRlckxheWVyLT5pc0NvbXBvc2l0ZWQoKTsKKworICAg
IC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5
ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXll
cjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikpCisgICAg
ICAgIC5zZXRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocmVu
ZGVyTGF5ZXItPmxvY2FsQm91bmRpbmdCb3goKSkpKQorICAgICAgICAuc2V0SXNDb21wb3NpdGVk
KGlzQ29tcG9zaXRlZCk7CisKKyAgICAvLyBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBjb21wb3Np
dGVkIGxheWVycyBvbmx5LgorICAgIGlmIChpc0NvbXBvc2l0ZWQpIHsKKyAgICAgICAgUmVuZGVy
TGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKKyAgICAgICAg
bGF5ZXJPYmplY3QtPnNldE1lbW9yeShiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0
ZSgpKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldENvbXBvc2l0ZWRCb3VuZHMoYnVpbGRPYmpl
Y3RGb3JJbnRSZWN0KGJhY2tpbmctPmNvbXBvc2l0ZWRCb3VuZHMoKSkpOworICAgIH0KKworICAg
IC8vIFByb2Nlc3MgY2hpbGRyZW4gbGF5ZXJzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+ID4gY2hpbGRyZW5BcnJheSA9IFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOwor
CisgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOworCisgICAgLy8g
Q2hlY2sgaWYgd2UgaGF2ZSBhIHJlZmxlY3Rpb24gbGF5ZXIuCisgICAgaWYgKHJlbmRlckxheWVy
LT5yZWZsZWN0aW9uTGF5ZXIoKSkKKyAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWls
ZE9iamVjdEZvckxheWVyKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkpOworCisgICAg
aWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5uZWdaT3JkZXJM
aXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNp
emUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkK
KyAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5
ZXIobmVnWk9yZGVyTGlzdC0+YXQoaSkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSByZW5kZXJMYXllci0+bm9ybWFs
Rmxvd0xpc3QoKSkgeworICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93TGlzdC0+
c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisg
ICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobm9y
bWFsRmxvd0xpc3QtPmF0KGkpKSk7CisgICAgfQorICAgIAorICAgIGlmIChyZW5kZXJMYXllci0+
aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4q
IHBvc1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAg
ICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICAgICAg
Y2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHBvc1pPcmRlckxpc3Qt
PmF0KGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsYXllck9iamVjdC0+c2V0Q2hpbGRM
YXllcnMoY2hpbGRyZW5BcnJheSk7CisgICAgCisgICAgcmV0dXJuIGxheWVyT2JqZWN0OworfQor
CitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkK
KyAgICAgICAgLnNldFgocmVjdC54KCkpCisgICAgICAgIC5zZXRZKHJlY3QueSgpKQorICAgICAg
ICAuc2V0V2lkdGgocmVjdC53aWR0aCgpKQorICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0
KCkpLnJlbGVhc2UoKTsKK30KKworU3RyaW5nIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5k
KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBpZiAoIWxheWVyKQorICAgICAgICBy
ZXR1cm4gIiI7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtX2RvY3VtZW50TGF5ZXJUb0lkTWFw
LmdldChsYXllcik7CisgICAgaWYgKGlkZW50aWZpZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWRl
bnRpZmllciA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOworICAgICAg
ICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnNldChsYXllciwgaWRlbnRpZmllcik7CisgICAgICAg
IG1faWRUb0xheWVyLnNldChpZGVudGlmaWVyLCBsYXllcik7CisgICAgfQorICAgIHJldHVybiBp
ZGVudGlmaWVyOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmQoY29u
c3QgUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIFN0cmluZyBpZGVudGlmaWVyID0gbV9kb2N1
bWVudExheWVyVG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnJlbW92ZShs
YXllcik7CisgICAgbV9pZFRvTGF5ZXIucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2RlSWRGb3JMYXllcklkKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBpbnQqIHJlc3VsdE5vZGVJZCkKK3sKKyAg
ICAvLyBPYnRhaW4gdGhlIFJlbmRlckxheWVyIGZyb20gdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQu
CisgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxh
eWVySWQpOworICAgIAorICAgIC8vIFNlbmQgYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBy
ZWdpc3RlcmVkIGxheWVyIGlkLgorICAgIGlmICghcmVuZGVyTGF5ZXIpIHsKKyAgICAgICAgKmVy
cm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIGEgYm91bmQgbGF5ZXIgZm9yIHRoZSBwcm92aWRl
ZCBpZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gR2V0IHRoZSBub2Rl
IGlkIGZyb20gdGhlIERPTSBhZ2VudCBhbmQgcmV0dXJuIGl0IHRvIHRoZSBmcm9udC1lbmQuCisg
ICAgSW5zcGVjdG9yRE9NQWdlbnQqIGluc3BlY3RvckRPTUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpOworICAgICpyZXN1bHROb2RlSWQgPSBpbnNwZWN0
b3JET01BZ2VudC0+cHVzaE5vZGVQYXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKHJlbmRlckxh
eWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZiYTVmMjE5YWFkNmU0YmE1MjJjZTEyZTc0NjQwMTViN2EyZGQ4NGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvckxheWVyVHJlZUFnZW50X2gK
KyNkZWZpbmUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKworI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVj
dG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOworY2xhc3MgUGFnZTsKKwordHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50
IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TGF5ZXJUcmVlQ29tbWFuZEhhbmRsZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckxheWVyVHJlZUFnZW50
PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0
ZSwgcGFnZSkpOworICAgIH0KKyAgICB+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOworICAgIHZpcnR1
YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKKyAg
ICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOworICAgIHZv
aWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKKworICAgIC8vIENh
bGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmly
dHVhbCB2b2lkIGdldExheWVyVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpMYXllcj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm9kZUlkRm9yTGF5ZXJJZChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgaW50KiByZXN1bHROb2RlSWQpOwor
Citwcml2YXRlOgorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqKTsKKworICAgIC8vIFJlbmRlckxheWVyLXJlbGF0
ZWQgbWV0aG9kcy4KKyAgICBTdHJpbmcgYmluZChjb25zdCBSZW5kZXJMYXllciopOworICAgIHZv
aWQgdW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CisKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvclJvb3RMYXllcigpOyAgIAorICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9y
TGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRy
ZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAg
ICAgIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6
TGF5ZXJUcmVlKiBtX2Zyb250ZW5kOworICAgIGJvb2wgbV9lbmFibGVkOworCisgICAgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKKyAg
ICBIYXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjEx
NmY5NDMxM2MyYjI4N2JlYjc4ZWU5ZDcyZTE3YjQ1Zi4uN2UyNzA5ZjcyZWM4YzdmZWIzMzE3MGIz
ZWUwMjM4NWExZWM2YTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OworY2xhc3MgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKQEAg
LTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAg
ICAgICAgLCBtX2luc3BlY3RvclBhZ2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NT
QWdlbnQoMCkKKyAgICAgICAgLCBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAg
ICwgbV9pbnNwZWN0b3JDb25zb2xlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFn
ZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAg
KzE1NSwxOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNh
bnZhc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAg
IHZvaWQgc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yQ2FudmFzQWdlbnQgPSBhZ2VudDsgfQogCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBpbnNwZWN0b3JM
YXllclRyZWVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7
IH0KKyAgICB2b2lkIHNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3BlY3RvckxheWVyVHJl
ZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owog
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9pbnNwZWN0b3JQYWdlQWdlbnQ7CiAgICAgSW5zcGVj
dG9yQ1NTQWdlbnQqIG1faW5zcGVjdG9yQ1NTQWdlbnQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVy
VHJlZUFnZW50OworI2VuZGlmCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3Rv
ckNvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2Vu
dDsKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3NzAuLmEwYWM1
YTE0YzUxNGE1MzUxMjU1NTdmODEyZTZhMjA2ZWVjZmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCkBAIC01MDgsNiArNTA5LDE4IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0
ZVR5cGUgdXBkYXRlCiAKICAgICBpZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAg
ICAgICAgZW5hYmxlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUg
aW5zcGVjdG9yIHRoYXQgdGhlIGxheWVyIHRyZWUgaGFzIGNoYW5nZWQuCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UocGFnZSgpKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIpCit7CisgICAgLy8gSW5mb3JtIHRoZSBpbnNwZWN0b3IgdGhh
dCB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgd2FzIGRlc3Ryb3llZC4KKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKHBhZ2UoKSwgcmVuZGVyTGF5ZXIpOwor
CisgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKKyAgICAtLW1fY29tcG9z
aXRlZExheWVyQ291bnQ7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNTE5MzQxMWEyZDcx
MGU3OWUyMzhmNTEwYmY3NGFlMGU2YTFmZGNhMS4uZTg5ZWM3OWQyYTE0MjM5YzFlOGRhZjdkYzQy
MjY0NWRlYzg2NzkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaApAQCAtMTcwLDExICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckJhY2tpbmdGb3JBbGxMYXllcnMoKTsKICAgICAKICAgICB2b2lkIGxheWVyQmVjYW1lQ29t
cG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIHsgKyttX2NvbXBvc2l0ZWRMYXllckNvdW50OyB9
Ci0gICAgdm9pZCBsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKLSAgICAg
ICAgLS1tX2NvbXBvc2l0ZWRMYXllckNvdW50OwotICAgIH0KKyAgICB2b2lkIGxheWVyQmVjYW1l
Tm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIAogI2lmIEVOQUJMRShWSURF
TykKICAgICAvLyBVc2UgYnkgUmVuZGVyVmlkZW8gdG8gYXNrIGlmIGl0IHNob3VsZCB0cnkgdG8g
dXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlYTdjOTYzZWI3MmFjMDJhMjBm
NTU2ZDM2MGYwNTgyNTFkYWJiZTIuLjU1MDRjOTU5ODdkZDUzMjU2MmMxMmI2MzkyMWU2ZjE3OGEw
OTAwZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wNCAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgdGhlIGJhY2tlbmQgZm9yIGV4
cG9zaW5nIHRoZSBsYXllciB0cmVlIHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBMYXlvdXRUZXN0IHRo
YXQgZXhlcmNpc2VzIHRoZSB2YXJpb3VzIEFQSXMgYW5kIGV2ZW50cyBleHBvc2VkIGJ5IHRoZSBM
YXllclRyZWVBZ2VudC4KKyAgICAgICAgVGhpcyB0ZXN0IGlzIHNraXBwZWQgb24gRUZMIHdoZXJl
IEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIGlzIG5vdCBhdmFpbGFibGUuCisKKyAgICAgICAgKiBp
bnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEyLTA0ICBKdXNzaSBLdWtr
b25lbiAgPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogICAgICAgICBNYWtlIHN2Zy9kb20v
dmlld3NwZWMtcGFyc2VyLSouaHRtbCBub24tZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZTkyNjNhNjU0ZGQ2OGRmZGYzNjI3OTlmMzQ3MmVmMDNjOTlkMGUwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzQyIEBACisKKz09PSBHZXQgdGhlIERvY3VtZW50ID09PQorCitQQVNTCisK
Kz09PSBFbmFibGUgdGhlIExheWVyVHJlZSBhZ2VudCA9PT0KKworUEFTUworCis9PT0gR2V0IHRo
ZSBpbml0aWFsIGxheWVyIHRyZWUgPT09CisKK1BBU1MKKworeworICAgICJib3VuZHMiOiB7Cisg
ICAgICAgICJ4IjogMCwKKyAgICAgICAgInkiOiAwLAorICAgICAgICAid2lkdGgiOiA4MDAsCisg
ICAgICAgICJoZWlnaHQiOiA2MDAKKyAgICB9LAorICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAor
ICAgICJtZW1vcnkiOiAwLAorICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAieCI6
IDAsCisgICAgICAgICJ5IjogMCwKKyAgICAgICAgIndpZHRoIjogODAwLAorICAgICAgICAiaGVp
Z2h0IjogNjAwCisgICAgfSwKKyAgICAiY2hpbGRMYXllcnMiOiBbCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
ICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAid2lkdGgiOiA4MDAsCisgICAgICAgICAgICAg
ICAgImhlaWdodCI6IDYwMAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpc0NvbXBvc2l0
ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVp
Z2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjog
W10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0
aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICAgICAg
ICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
IndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWwor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJi
b3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4
IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAi
eSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ICAibWVtb3J5IjogNDAwMDAsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRz
IjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMTAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDEwMAorICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbCisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0
aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1v
cnkiOiAxMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVp
Z2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJ3aWR0aCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVp
Z2h0IjogMAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXND
b21wb3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtd
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAg
ICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMjM3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgImhlaWdodCI6IDE0NAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIm1l
bW9yeSI6IDEzNjUxMiwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAyMzcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTQ0CisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQorCis9PT0gTWVzc2FnZSB0aGUgcGFn
ZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllciA9PT0KKworUEFTUworCis9PT0gR2V0IHRo
ZSBtb2RpZmllZCBsYXllciB0cmVlID09PQorCitQQVNTCisKK3sKKyAgICAiYm91bmRzIjogewor
ICAgICAgICAieCI6IDAsCisgICAgICAgICJ5IjogMCwKKyAgICAgICAgIndpZHRoIjogNzg1LAor
ICAgICAgICAiaGVpZ2h0IjogNjAwCisgICAgfSwKKyAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwK
KyAgICAibWVtb3J5IjogMCwKKyAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgIngi
OiAwLAorICAgICAgICAieSI6IDAsCisgICAgICAgICJ3aWR0aCI6IDc4NSwKKyAgICAgICAgImhl
aWdodCI6IDI5MTYKKyAgICB9LAorICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgeworICAg
ICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAg
ICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICJ3aWR0aCI6IDc4NSwKKyAgICAgICAgICAg
ICAgICAiaGVpZ2h0IjogNjAwCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImlzQ29tcG9z
aXRlZCI6IGZhbHNlLAorICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJo
ZWlnaHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
ImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMi
OiBbXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndp
ZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAxMDAwMCwKKyAgICAgICAgICAgICAgICAg
ICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJtZW1vcnkiOiAxMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAgICJtZW1vcnkiOiA0MDAwMCwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3Vu
ZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndp
ZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1l
bW9yeSI6IDEwMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91
bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJo
ZWlnaHQiOiA1MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJo
ZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjog
W10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0
aCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCisg
ICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAzNzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiaGVpZ2h0IjogMjkxNgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
Im1lbW9yeSI6IDQzMTU2ODAsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRz
IjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMzcwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDI5MTYKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRz
IjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CisKKz09PSBPYnRhaW4gdGhlIG5v
ZGUgaWQgZm9yIHRoZSBsYXllciB3aXRoIGlkIDAuMTEgPT09CisKK1BBU1MKKworPT09IEdldCBh
dHRyaWJ1dGVzIGZvciBub2RlIHdpdGggaWQgOSA9PT0KKworUEFTUworCis9PT0gVGVzdCBjb21w
bGV0ZSwgYWxsIGV4cGVjdGVkIGNvbmRpdGlvbnMgbWV0ID09PQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGJlMTNiMjBi
YTNiYzc4MmUyYWVkN2ZlNmZiMmU3ODc1ZDg2ZTU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApAQCAtMCwwICsxLDI0NiBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24g
YWRkQ29tcG9zaXRlZExheWVyKCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbXBvc2l0ZWQiOwor
ICAgIGVsZW1lbnQuaWQgPSAibGFzdC1lbGVtZW50IjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworfTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluaXRp
YWxMYXllclRyZWU7CisgICAgdmFyIGV2ZW50c0NvdW50ID0gMDsKKworICAgIEluc3BlY3RvclRl
c3QuZXZlbnRIYW5kbGVyWyJMYXllclRyZWUubGF5ZXJUcmVlRGlkQ2hhbmdlIl0gPSBmdW5jdGlv
biAobWVzc2FnZU9iamVjdCkgeworICAgICAgICBldmVudHNDb3VudCsrOworICAgIH07CisKKyAg
ICBnZXREb2N1bWVudCgpOworICAgIAorICAgIGZ1bmN0aW9uIGdldERvY3VtZW50KCkKKyAgICB7
CisgICAgICAgIC8vIFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBkb2N1bWVudCBzbyB0aGF0IGxhdGVy
IG9uIHdlIG1heSBnZXQgc2Vuc2libGUgbm9kZUlkcy4KKyAgICAgICAgc3RlcCh7CisgICAgICAg
ICAgICBuYW1lOiAiR2V0IHRoZSBEb2N1bWVudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9N
LmdldERvY3VtZW50IiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAg
Y2FsbGJhY2s6IGVuYWJsZUxheWVyVHJlZUFnZW50CisgICAgICAgIH0pOworICAgIH07CisgICAg
CisgICAgZnVuY3Rpb24gZW5hYmxlTGF5ZXJUcmVlQWdlbnQocmVzdWx0KQorICAgIHsKKyAgICAg
ICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiRW5hYmxlIHRoZSBMYXllclRyZWUgYWdlbnQi
LAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5lbmFibGUiLAorICAgICAgICAgICAg
cGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ2V0SW5pdGlhbExheWVyVHJl
ZQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ2V0SW5pdGlhbExheWVyVHJl
ZShyZXN1bHQpCisgICAgeworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQg
dGhlIGluaXRpYWwgbGF5ZXIgdHJlZSIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVl
LmdldExheWVyVHJlZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAg
IGNhbGxiYWNrOiBnb3RJbml0aWFsTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAg
ICBmdW5jdGlvbiBnb3RJbml0aWFsTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlu
aXRpYWxMYXllclRyZWUgPSByZXN1bHQubGF5ZXJUcmVlOworCisgICAgICAgIGR1bXBMYXllclRy
ZWUoaW5pdGlhbExheWVyVHJlZSk7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1l
OiAiTWVzc2FnZSB0aGUgcGFnZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllciIsCisgICAg
ICAgICAgICBjb21tYW5kOiAiUnVudGltZS5ldmFsdWF0ZSIsCisgICAgICAgICAgICBwYXJhbWV0
ZXJzOiB7ICJleHByZXNzaW9uIjogImFkZENvbXBvc2l0ZWRMYXllcigpIiB9LAorICAgICAgICAg
ICAgY2FsbGJhY2s6IGdldE1vZGlmaWVkTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisK
KyAgICBmdW5jdGlvbiBnZXRNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAg
ICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUi
LAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5nZXRMYXllclRyZWUiLAorICAgICAg
ICAgICAgcGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ290TW9kaWZpZWRM
YXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIHZhciBsYXllckNvdW50ID0gMDsK
KworICAgIGZ1bmN0aW9uIGdvdE1vZGlmaWVkTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAg
ICAgIGR1bXBMYXllclRyZWUocmVzdWx0LmxheWVyVHJlZSk7CisKKyAgICAgICAgdmFyIG11dGF0
aW9ucyA9IGxheWVyVHJlZU11dGF0aW9ucyhpbml0aWFsTGF5ZXJUcmVlLCByZXN1bHQubGF5ZXJU
cmVlKTsKKyAgICAgICAgdmFyIGxhc3RJZCA9IG11dGF0aW9ucy5hZGRpdGlvbnNbMF07CisKKyAg
ICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiT2J0YWluIHRoZSBub2RlIGlkIGZvciB0
aGUgbGF5ZXIgd2l0aCBpZCAiICsgbGFzdElkLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVy
VHJlZS5ub2RlSWRGb3JMYXllcklkIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsgImxheWVy
SWQiOiBsYXN0SWQgfSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnb3ROb2RlSWRGb3JMYXN0TGF5
ZXIKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdE5vZGVJZEZvckxhc3RM
YXllcihyZXN1bHQpCisgICAgeworICAgICAgICB2YXIgaWQgPSByZXN1bHQubm9kZUlkOworICAg
ICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgYXR0cmlidXRlcyBmb3Igbm9kZSB3
aXRoIGlkICIgKyBpZCwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0QXR0cmlidXRlcyIs
CisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ICJub2RlSWQiOiBpZCB9LAorICAgICAgICAgICAg
Y2FsbGJhY2s6IGdvdE5vZGVBdHRyaWJ1dGVzCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBm
dW5jdGlvbiBnb3ROb2RlQXR0cmlidXRlcyhyZXN1bHQpCisgICAgeworICAgICAgICB2YXIgYXR0
cmlidXRlcyA9IGF0dHJpYnV0ZXNEaWN0aW9uYXJ5RnJvbUFycmF5KHJlc3VsdC5hdHRyaWJ1dGVz
KTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaWQgIT09ICJsYXN0LWVsZW1lbnQiKQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IERpZCBub3Qgb2J0YWluIHRoZSBleHBlY3Rl
ZCBlbGVtZW50IGZvciB0aGUgbGFzdCBpbnNlcnRlZCBsYXllci4iKTsKKworICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQorICAgIHsKKyAg
ICAgICAgaWYgKCFldmVudHNDb3VudCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJG
QUlMOiBEaWQgbm90IHJlY2VpdmUgbGF5ZXJUcmVlRGlkQ2hhbmdlIGV2ZW50cy4iKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuPT09IFRlc3QgY29tcGxl
dGUsIGFsbCBleHBlY3RlZCBjb25kaXRpb25zIG1ldCA9PT0iKTsKKworICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBsYXllclRyZWVN
dXRhdGlvbnMob2xkTGF5ZXJUcmVlLCBuZXdMYXllclRyZWUpCisgICAgeworICAgICAgICB2YXIg
b2xkS2V5cyA9IE9iamVjdC5rZXlzKGZsYXR0ZW5lZExheWVyVHJlZShvbGRMYXllclRyZWUpKTsK
KyAgICAgICAgdmFyIG5ld0tleXMgPSBPYmplY3Qua2V5cyhmbGF0dGVuZWRMYXllclRyZWUobmV3
TGF5ZXJUcmVlKSk7CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGFkZGl0aW9uczog
bmV3S2V5cy5maWx0ZXIoZnVuY3Rpb24gKGtleSkgeworICAgICAgICAgICAgICAgIHJldHVybiAo
b2xkS2V5cy5pbmRleE9mKGtleSkgPT09IC0xKTsKKyAgICAgICAgICAgIH0pLAorICAgICAgICAg
ICAgcmVtb3ZhbHM6IG9sZEtleXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gKG5ld0tleXMuaW5kZXhPZihrZXkpID09PSAtMSk7CisgICAgICAgICAgICB9
KQorICAgICAgICB9OworICAgIH07CisKKyAgICBmdW5jdGlvbiBmbGF0dGVuZWRMYXllclRyZWUo
bGF5ZXJUcmVlKQorICAgIHsKKyAgICAgICAgdmFyIGxheWVyQnlJZHMgPSB7fTsKKworICAgICAg
ICBmdW5jdGlvbiByZWN1cnNlIChsYXllcikgeworICAgICAgICAgICAgbGF5ZXJCeUlkc1tsYXll
ci5sYXllcklkXSA9IGxheWVyOworICAgICAgICAgICAgaWYgKGxheWVyLmNoaWxkTGF5ZXJzKQor
ICAgICAgICAgICAgICAgIGxheWVyLmNoaWxkTGF5ZXJzLmZvckVhY2gocmVjdXJzZSk7CisgICAg
ICAgIH07CisgICAgICAgIAorICAgICAgICByZWN1cnNlKGxheWVyVHJlZSk7CisKKyAgICAgICAg
cmV0dXJuIGxheWVyQnlJZHM7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXNEaWN0
aW9uYXJ5RnJvbUFycmF5KGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICB2YXIgZGljdGlvbmFy
eSA9IHt9CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGF0dHJpYnV0ZXMubGVuZ3Ro
OyBpIDwgY291bnQ7IGkgKz0gMikgeworICAgICAgICAgICAgZGljdGlvbmFyeVthdHRyaWJ1dGVz
W2ldXSA9IGF0dHJpYnV0ZXNbaSArIDFdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkaWN0
aW9uYXJ5OworICAgIH07CisKKyAgICBmdW5jdGlvbiBkdW1wTGF5ZXJUcmVlKGxheWVyVHJlZSkK
KyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VyIChrZXksIHZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gKGtleSA9PT0gImxheWVySWQiKSA/IHVuZGVmaW5lZCA6IHZh
bHVlOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxu
IiArIEpTT04uc3RyaW5naWZ5KGxheWVyVHJlZSwgcmVwbGFjZXIsICIgICAgIikpOworICAgIH07
CisKKyAgICBmdW5jdGlvbiBzdGVwKHRlc3QpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiXG49PT0gIiArIHRlc3QubmFtZSArICIgPT09XG4iKQorICAgICAgICBJbnNwZWN0b3JU
ZXN0LnNlbmRDb21tYW5kKHRlc3QuY29tbWFuZCwgdGVzdC5wYXJhbWV0ZXJzLCBmdW5jdGlvbiht
ZXNzYWdlT2JqZWN0KSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5oYXNPd25Qcm9w
ZXJ0eSgiZXJyb3IiKSkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlM
OiAiICsgbWVzc2FnZU9iamVjdC5lcnJvci5tZXNzYWdlICsgIiAoIiArIG1lc3NhZ2VPYmplY3Qu
ZXJyb3IuY29kZSArICIpIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTIik7CisgICAgICAgICAgICB0ZXN0LmNhbGxi
YWNrKG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgfTsKKworfTsKKwor
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbiAoKSB7
CisgICAgcnVuVGVzdCgpOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAgICAKKyAgICBkaXYgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgbGVmdDogMDsKKyAgICB9CisgICAgICAKKyAgICAu
cmVndWxhciB7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgfQorCisgICAgLmNvbXBvc2l0
ZWQgeworICAgICAgICB0b3A6IDI1cHg7CisgICAgICAgIGxlZnQ6IDI1cHg7CisgICAgICAgIHdp
ZHRoOiA1MHB4OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAg
IH0KKyAgICAgIAorICAgIC5vZmZzZXQgeworICAgICAgICBsZWZ0OiAyMDBweDsKKyAgICAgICAg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgfQorCisgICAgYnV0dG9uIHsK
KyAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7CisgICAgICAgIG1hcmdpbi10b3A6IDEyMHB4Owor
ICAgIH0KKyAgICAgIAorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCisgICAgPGRpdiBjbGFz
cz0icmVndWxhciI+PC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2
IGNsYXNzPSJyZWd1bGFyIG9mZnNldCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQi
PjwvZGl2PgorICAgIDwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDUwMjNjOGE1YmEzNDM1YjkzYmE0NDdmM2I4
MmE5NzY1NDIzMmNhYWEuLjg4MTdiM2Y5OWE5Zjg2YWFkMmNiM2RiNzdhNDlmZTA5ZTc1MDFlZWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNjgwLDYg
KzE2ODAsOSBAQCB3ZWJraXQub3JnL2IvMTAwODU1IGlldGVzdGNlbnRlci9jc3MzL3RleHQvdGV4
dHNoYWRvdy0wMDguaHRtIFsgSW1hZ2VPbmx5RmFpbHVyZQogd2Via2l0Lm9yZy9iLzEwMDg0NiBp
bnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItcGF1c2UtZGVkaWNhdGVkLXdvcmtlci5odG1sIFsg
U2tpcCBdCiB3ZWJraXQub3JnL2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci10
ZXJtaW5hdGUtZGVkaWNhdGVkLXdvcmtlci13aGlsZS1wYXVzZWQuaHRtbCBbIFNraXAgXQogCisj
IEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIGlzIHJlcXVpcmUgZm9yIExheWVyIHRyZWUgaW5zcGVj
dGlvbiB0ZXN0IHRvIHBhc3MKK0J1ZyhFRkwpIHdlYmtpdC5vcmcvYi8xMDM1MTMgaW5zcGVjdG9y
LXByb3RvY29sL2xheWVyLXRyZWUuaHRtbCBbIFNraXAgXQorCiAjIE5ldyBtZWRpYSB0ZXN0IGlu
dHJvZHVjZWQgaW4gcjEzMzY2MCBmYWlscy4KIHdlYmtpdC5vcmcvYi8xMDE0MzkgbWVkaWEvcHJv
Z3Jlc3MtZXZlbnRzLWdlbmVyYXRlZC1jb3JyZWN0bHkuaHRtbCBbIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177565</attachid>
            <date>2012-12-04 14:30:15 -0800</date>
            <delta_ts>2012-12-05 02:52:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121204232738.patch</filename>
            <type>text/plain</type>
            <size>61183</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjYjc1NTQxYzlhYjU4
NTA0NWM5N2I5Mzc5YjExMTQ0ZDJmZGFjMS4uMTMyZGFhNmQ3ODEzYTg2ZTNhM2JmMjUxZmYyMWYy
OWI4NzkyZGE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTEyLTA0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2Ugd2l0aCBXZWJDb3JlIHRvIGFjY2VzcworICAgICAgICBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFja2VkIGJ5Cisg
ICAgICAgIHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
IGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVBZ2VudCB3aGlj
aCB3aWxsCisgICAgICAgIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIGNoYW5nZXMgdG8gdGhlIHJl
bmRlciBsYXllciB0cmVlIHZpYSBhIG5ldyBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnQsIHByb3Zp
ZGluZyBhbiBvYmplY3QKKyAgICAgICAgY29udGFpbmluZyB0aGUgZW50aXJlIGhpZXJhcmNoeSBv
ZiBSZW5kZXJMYXllcnMgZm9yIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuIFRoaXMgaGllcmFyY2h5
IGNhbiBiZSBxdWVyaWVkIGF0IGFueQorICAgICAgICB0aW1lIHVzaW5nIHRoZSAuZ2V0TGF5ZXJU
cmVlKCkgbWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudC4gRmluYWxseSwgdGhlIExheWVyVHJl
ZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXllcklkKCkKKyAgICAgICAgbWV0aG9k
IGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBS
ZW5kZXJMYXllciB3aXRoIHRoZSBwcm92aWRlZCBsYXllciBpZC4KKyAgICAgICAgCisgICAgICAg
IEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFzIGJl
ZW4gY2hhbmdlZCBzdWNoIHRoYXQgaW4gaXRzIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKKyAg
ICAgICAgbWV0aG9kIHdlIGNhbGwgdGhlIGxheWVyVHJlZURpZENoYW5nZSBtZXRob2Qgb24gdGhl
IEluc3BlY3RvckxheWVyVHJlZUFnZW50IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVl
Lmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjogRGVmaW5lIG5ldyB0eXBlcyBJbnRSZWN0ICh4LCB5LCB3aWR0aCwgaGVpZ2h0
KSBhbmQgTGF5ZXIsIHdoaWNoIGhvbGRzIHRoZSBpbmZvcm1hdGlvbiBmb3IgYQorICAgICAgICBS
ZW5kZXJMYXllciAobGF5ZXJJZCwgYm91bmRzLCBpc0NvbXBvc2l0ZWQsIG1lbW9yeSwgY29tcG9z
aXRlZEJvdW5kcykgYW5kIGl0cyBjaGlsZHJlbiAoY2hpbGRMYXllcnMpLiBXZSBhbHNvIGRlZmlu
ZSB0aGUKKyAgICAgICAgbWV0aG9kcyBvZiB0aGUgTGF5ZXJUcmVlQWdlbnQgb2JqZWN0IChlbmFi
bGUsIGRpc2FibGUsIGdldExheWVyVHJlZSwgbm9kZUlkRm9yTGF5ZXJJZCkgYW5kIHRoZSBsYXll
clRyZWVEaWRDaGFuZ2UgZXZlbnQgaXQgIAorICAgICAgICBmaXJlcy4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQ
YXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKTogTmV3IG1ldGhvZCBmYWNpbGl0YXRpbmcgcHVz
aGluZyB0aGUgbm9kZSBhc3NvY2lhdGVkIHdpdGggCisgICAgICAgIGEgZ2l2ZW4gUmVuZGVyTGF5
ZXIgdG8gdGhlIGZyb250LWVuZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3ll
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZUFnZW50U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpyZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKTog
QnVpbGQgdGhlIGVudGlyZSBoaWVyYXJjaHkgb2YgUmVuZGVyTGF5ZXJzIGZyb20gdGhlIHByb3Zp
ZGVkIAorICAgICAgICBSZW5kZXJMYXllci4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6bm9kZUlkRm9yTGF5ZXJJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0
cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKEluc3RydW1l
bnRpbmdBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6aW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0Fn
ZW50czo6c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6IENhbGwgdGhlIGxheWVyVHJlZURp
ZENoYW5nZSBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50IHZpYSB0aGUgCisgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbiB0byBpbmZvcm0gdGhlIGZyb250LWVuZCB0aGF0IHRoZSBS
ZW5kZXJMYXllciBoaWVyYXJjaHkgaGFzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25Db21w
b3NpdGVkKTogQ2FsbCB0aGUgcmVuZGVyTGF5ZXJEZXN0cm95ZWQgbWV0aG9kIG9uIHRoZSBMYXll
clRyZWVBZ2VudCB2aWEgCisgICAgICAgIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gdG8g
dW5iaW5kIHRoZSBsYXllciB0aGF0IGlzIGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIChSZW5kZXJMYXllckNvbXBv
c2l0b3IpOgorCiAyMDEyLTEyLTA0ICBNaWNoYWVsIFBydWV0dCAgPG1pY2hhZWxANjhrLm9yZz4K
IAogICAgICAgICBbSlNDXSBHZW5lcmF0ZSB2aXNpdENoaWxkcmVuKCkgZm9yIHVuY3VzdG9taXpl
ZCBFdmVudFRhcmdldCBpbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDk1MGEzNjA5
YTdmYTBhOTBjNTUzOTU0ZDMzNmNkMjI3ODcxMGMwZTUuLmVjMjI0YTI3ZDRlNzI3MWEzYjg1NWMw
ODRiNzM3MmFhNGI5NjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTk5LDYgKzE1OTks
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rvcnku
Y3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5j
cHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDVhZjdlZjU2MWMwN2ZkYjkyOGU4NDQ1M2IyYmU4ZmM3ZTQ3YzYwNjAuLmI2ZDRiMWEyMWExMDY1
NGZiZGUzOTk4NzA2ZDBjOGEzODZiZTRhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMzc0Miw2ICszNzQyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyOTkwMjFjOWUyZmMz
NmVjMmFiYzhjNmRlNWQ0NWE4ZDIwOGE0NGRhLi44NjYzMDAyMTY0MTgzZWZiZDBlNmQ2NmJhNmY1
ZjZlOTNlOTk5OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTc3Myw2ICs3NzMsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcCBcCkBAIC0xOTIxLDYgKzE5MjIsNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3MGYuLmIyMGU1Y2JmMmY1ZWQ5
OTdhZDRlYzQzYzkzOWYwZWM2ZWVkNjM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4ODIsNiAr
Mjg4Miw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgnLAor
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggZTk5NDgwYzlkNDAxODI3Y2NiNDJkOWEyN2E4ZDZlNzRlOGU0
NzEzOC4uMzMyMTk1MWNhMzJiODRhYzQ1MzMxY2QwZjE1NjRlYzVmMmVmMWM2NCAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc1NDcwLDYgKzc1
NDcwLDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAiCisJCQkJPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIgogCQkJCT4KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3MGZlMzc4MzRmNzllNmNmMWNjZDFhNTRjNWRlZGQyNGU5
NDlhOGZiLi5kYTNiNTUzYjM2ZmRmMzcyMjM5ZmFmNDM5M2RlYzk4MmZiZmMwNGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
OTEwLDYgKzE5MTAsOCBAQAogCQk3MTkwNERFQTE1NkE2MzNBMDAxRTFCQTUgLyogRE9NU1ZHVmll
d1NwZWNJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1Zp
ZXdTcGVjSW50ZXJuYWwuaCAqLzsgfTsKIAkJNzFBNTdERjExNTRCRTI1QzAwMDlEMTIwIC8qIFNW
R1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzFBNTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3Bw
ICovOyB9OwogCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERjAx
NTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNzFCMUUxMjUx
NjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIxRTEyNDE2NDA0OENDMDBCMTg4
MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLzsgfTsKKwkJNzFCMUUxMjYxNjQwNDkx
QTAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgwQSAv
KiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi87IH07CiAJCTcxQ0M3QTIwMTUyQTBCRkUw
MDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAvKiBT
VkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDExNTY4MTk3NjAwODYy
MjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MURDQjZGRjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29tQW5k
UGFuLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDIxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFu
ZFBhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFE
Q0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovOyB9OwpAQCAtOTE5
Myw2ICs5MTk1LDggQEAKIAkJNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1ZpZXdT
cGVjSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAgLyog
U1ZHUGF0aFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdQYXRoVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFB
NTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIx
RTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJBMEJGRTAwOUVFQUY5IC8qIFNW
R0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxRENCNkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdab29tQW5kUGFuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8q
IEpTU1ZHWm9vbUFuZFBhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NW
R1pvb21BbmRQYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODI3LDYgKzE0
ODMxLDggQEAKIAkJCQlBQTczMTgzQzE1OTI1NUI5MDBBOTNFNkUgLyogSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGUuY3BwICovLAogCQkJCUFBNzMxODNEMTU5MjU1QjkwMEE5M0U2RSAvKiBJbmpl
Y3RlZFNjcmlwdENhbnZhc01vZHVsZS5oICovLAogCQkJCUFBOTAzMEZFMTU3RTE2QTAwMDI3NjI0
NyAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcyAqLywKKwkJCQk3MUIxRTEy
MzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovLAorCQkJ
CTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oICov
LAogCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3QuY3Bw
ICovLAogCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
aCAqLywKIAkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRIb3N0
LmlkbCAqLywKQEAgLTIzMzQ0LDYgKzIzMzUwLDcgQEAKIAkJCQk4NTAyQUI1NDBBRDQzOEMwMDAz
Nzg1NDAgLyogRE9NU1ZHRkVGdW5jR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJB
Qjk4MEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxlbWVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTAyQUI1NjBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5j
UkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjFFMTI1MTY0MDQ4RjcwMEIxODgwQSAv
KiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFCOTkw
QUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY1JFbGVtZW50SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDJBQjU4MEFENDM4QzAwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjlBMEFENDM5NEUwMDM3ODU0
MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjIwNSw2ICsyNjIxMiw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3MUIx
RTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8qIEFi
c3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjlDMTZFMTMwMEMyRTIwMDJE
Nzk0RSAvKiBBY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNDU0NTM5ZjY2YTlmYmQ1ZTJlM2Uw
YWI3Y2Y0NDJjNmY4NzQ2OTIxOC4uYWQyNTA1NTM5MTZhNDBmNjA4ZjVjM2VlNWQwMWM4MGI3MjNm
OWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzI0Miw1
ICszMjQyLDcyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMi
OiBbXQorICAgIH0sCisgICAgeworICAgICAgICAiZG9tYWluIjogIkxheWVyVHJlZSIsCisgICAg
ICAgICJoaWRkZW4iOiB0cnVlLAorICAgICAgICAidHlwZXMiOiBbCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgImlkIjogIkxheWVySWQiLAorICAgICAgICAgICAgICAgICJ0eXBlIjog
InN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBSZW5kZXJM
YXllciBpZGVudGlmaWVyLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgImlkIjogIkludFJlY3QiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlLiIsCisgICAg
ICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHggcG9zaXRpb24u
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJpbnRlZ2Vy
IiwgImRlc2NyaXB0aW9uIjogIlRoZSB5IHBvc2l0aW9uLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAi
VGhlIHdpZHRoIG1ldHJpYy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVp
Z2h0IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGVpZ2h0IG1ldHJp
Yy4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJpZCI6ICJMYXllciIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJv
dXQgYSBjb21wb3NpdGluZyBsYXllci4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVySWQiLCAiJHJlZiI6ICJMYXll
cklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSB1bmlxdWUgaWQgZm9yIHRoaXMgbGF5ZXIuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdW5kcyIsICIkcmVmIjogIkludFJlY3Qi
LCAiZGVzY3JpcHRpb24iOiAiQm91bmRzIG9mIHRoZSBsYXllci4iIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiaXNDb21wb3NpdGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNj
cmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVyIGlzIGNvbXBvc2l0ZWQuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9yeSIsICJ0eXBlIjogImludGVn
ZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRXN0aW1hdGVkIG1lbW9yeSB1
c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNv
bXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2YgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIuIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNoaWxkTGF5ZXJzIiwgInR5cGUiOiAiYXJyYXki
LCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIkxheWVyIiB9LCAiZGVzY3Jp
cHRpb24iOiAiQ2hpbGQgbGF5ZXJzLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgXSwKKyAgICAgICAgImNvbW1hbmRzIjogWworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkVuYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0aW9uLiIKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIsCisg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGNvbXBvc2l0aW5nIHRyZWUg
aW5zcGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICJuYW1lIjogImdldExheWVyVHJlZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJldHVybnMgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBjdXJyZW50IHBhZ2Uu
IiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJsYXllclRyZWUiLCAiJHJlZiI6ICJMYXllciIsICJkZXNjcmlwdGlvbiI6ICJMYXll
ciB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIgfQorICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAibm9kZUlkRm9yTGF5ZXJJZCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJl
dHVybnMgdGhlIG5vZGUgaWQgZm9yIGEgZ2l2ZW4gbGF5ZXIgaWQuIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllcklk
IiwgIiRyZWYiOiAiTGF5ZXJJZCIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwg
IiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbm9kZSBpZCBmb3IgdGhl
IGdpdmVuIGxheWVyIGlkLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiCisgICAgICAgICAgICB9CisgICAgICAg
IF0KICAgICB9XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJ
bk9uZS5jcHAKaW5kZXggZDE5YWQyZTBhMDIzYjk5YTg2NDQ1NjdhMzE0Zjc0YTFkZmY3MDcxZi4u
MDMwMWIxY2NhZGE1MjUzZjBlOWFiZTVlOGIxODY5NjFmODBhOTBmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC01OCw2ICs1OCw3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAi
CisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmNwcCIKICNp
bmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIyNGNhMTcwYjk2NDcwY2E5ZTc2
MzdkOWQwNDk3ZmExZmUxMDhhOTQuLjc5YWQ4NmRiYjkyZTMyYzQ0M2M5N2RlYWQwNTBiYzcyZjUw
NWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFnZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKQEAgLTE1
MSw2ICsxNTIsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBh
Z2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgbV9hZ2VudHMuYXBw
ZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSkp
OwogCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjcmVhdGUo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlKSk7CisKICAg
ICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKICAgICBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQobV9pbnNwZWN0
b3JBZ2VudAogICAgICAgICAsIGNvbnNvbGVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOWI4ODkwYWM2NjAyMWE5NDI5ZGI3NTk0
NzdhZGIxY2E0MDMxZmRiNS4uZmUwMWU3M2Y0NWE2MDU0ZTQ3ZTA4YjMwM2MyMGM0YWU5MWVlYTY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC01NjMsNiArNTYzLDExIEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRo
VG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgIHJldHVybiBtYXAtPmdldChub2RlVG9Q
dXNoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhGb3JSZW5kZXJM
YXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIHJl
dHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5ub2Rl
KCkpOworfQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKE5vZGUqIG5vZGUp
CiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGY3Y2M1ZmIxOGFk
MThmMTg5ZDk5NTI2OTNhYTU0ZTBkYjZiYWFlNjIuLjNjZmNlN2I2M2U4YjFjZDEyYzIyNTI1N2Y2
YjliM2E4MzRiMzg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFs
dWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xOTksNiArMjAwLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQorICAgIGludCBwdXNoTm9k
ZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAogcHJp
dmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVj
dG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJ
bnNwZWN0b3JPdmVybGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDBhY2YzMDM4YjZiZGQ1NDkzNmUwMGUy
ZDE0NjA4ZTgwMzliNjI4MzQuLmEzYTRjMTg5NWFiYmJmZjk5MzI0YWU3OWMxMjI5OTI4YTVkMGQ5
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9N
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
IgpAQCAtOTAwLDcgKzkwMSwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudAogICAgICAgICAg
ICAgZG9tU3RvcmFnZUFnZW50LT5jbGVhclJlc291cmNlcygpOwogICAgICAgICBpZiAoSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9N
QWdlbnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1bWVudChtYWluRnJhbWUtPmRv
Y3VtZW50KCkpOwotCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgICAgIGxheWVyVHJl
ZUFnZW50LT5yZXNldCgpOworI2VuZGlmCiAgICAgICAgIGluc3BlY3RvckFnZW50LT5kaWRDb21t
aXRMb2FkKCk7CiAgICAgfQogICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKQpAQCAtMTI4OCw2ICsx
MjkyLDIwIEBAIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJCiAgICAgcmV0dXJuIGRldmljZU9yaWVu
dGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPmxheWVyVHJlZURpZENo
YW5nZSgpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJE
ZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxheWVyRGVz
dHJveWVkKHJlbmRlckxheWVyKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBiYTQ0N2Y4ZDA2MzU1
ZmRjZmRkOTI0NTg3OWQzYjhlN2VmOThkN2QyLi42ZjY3ZGRiOGY2ZmFhY2EyYTRlOWQ3NjM5MGY4
MDdjYjE1ZjU1NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VSTDsKIGNs
YXNzIE5vZGU7CitjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0yNzgsNiArMjc5
LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJy
aWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVudGF0aW9uRGF0YSopOwogCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0YXRpYyB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQo
UGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3Js
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7CkBA
IC00NTUsNiArNDYxLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRpYyBEZXZpY2VP
cmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb25JbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJMYXllckRlc3Ryb3ll
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYK
KwogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CiAjZW5kaWYKIH07CkBAIC0xNTIw
LDYgKzE1MzIsMjAgQEAgaW5saW5lIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW8KICAgICByZXR1cm4gZGV2aWNl
T3JpZW50YXRpb247CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZShQYWdl
KiBwYWdlKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIGxheWVyVHJl
ZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSogcGFnZSwg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2Uo
cGFnZSkpCisgICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVkSW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCByZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbGxlY3RpbmdIVE1MUGFyc2VF
cnJvcnMoUGFnZSogcGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMzNjOTgxNDhmYzhlZjVj
ZmQxZTUzYTE5MGUxOWJkNzBhNzI2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0wLDAgKzEsMjM0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFnZW50
LmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisjaW5j
bHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXll
ci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgTGF5ZXJUcmVlQWdlbnRTdGF0ZSB7CitzdGF0aWMgY29uc3Qg
Y2hhciBsYXllclRyZWVBZ2VudEVuYWJsZWRbXSA9ICJsYXllclRyZWVBZ2VudEVuYWJsZWQiOwor
fTsKKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBz
dGF0ZSwgUGFnZSogcGFnZSkKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JMYXll
clRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQorICAg
ICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kKDApCisgICAgLCBtX2Vu
YWJsZWQoZmFsc2UpCit7CisgICAgCit9CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQoreworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBt
X2Zyb250ZW5kID0gZnJvbnRlbmQtPmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAg
ICBkaXNhYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3Jl
KCkKK3sKKyAgICBlbmFibGUoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OnJlc2V0KCkKK3sKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7CisgICAgbV9p
ZFRvTGF5ZXIuY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihMYXllclRy
ZWVBZ2VudFN0YXRlOjpsYXllclRyZWVBZ2VudEVuYWJsZWQpKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFn
ZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgbV9lbmFibGVkKTsKKyAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KHRoaXMpOworfQorCit2
b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKK3sKKyAg
ICBpZiAoIW1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IGZhbHNl
OworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5ZXJUcmVl
QWdlbnRFbmFibGVkLCBtX2VuYWJsZWQpOworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCit7CisgICAgbV9mcm9udGVuZC0+bGF5ZXJUcmVl
RGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlbmRlckxh
eWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICB1bmJp
bmQocmVuZGVyTGF5ZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpnZXRM
YXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5
ZXI+JiBvYmplY3QpCit7CisgICAgb2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSb290TGF5ZXIoKTsK
K30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKCkKK3sKKyAgICByZXR1cm4g
YnVpbGRPYmplY3RGb3JMYXllcihtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50
UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5yb290UmVuZGVyTGF5ZXIoKSk7Cit9CisKK1Bhc3NS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpidWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAg
ICBib29sIGlzQ29tcG9zaXRlZCA9IHJlbmRlckxheWVyLT5pc0NvbXBvc2l0ZWQoKTsKKworICAg
IC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5
ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXll
cjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldExheWVySWQoYmluZChyZW5kZXJMYXllcikpCisgICAg
ICAgIC5zZXRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGVuY2xvc2luZ0ludFJlY3QocmVu
ZGVyTGF5ZXItPmxvY2FsQm91bmRpbmdCb3goKSkpKQorICAgICAgICAuc2V0SXNDb21wb3NpdGVk
KGlzQ29tcG9zaXRlZCk7CisKKyAgICAvLyBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBjb21wb3Np
dGVkIGxheWVycyBvbmx5LgorICAgIGlmIChpc0NvbXBvc2l0ZWQpIHsKKyAgICAgICAgUmVuZGVy
TGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXItPmJhY2tpbmcoKTsKKyAgICAgICAg
bGF5ZXJPYmplY3QtPnNldE1lbW9yeShiYWNraW5nLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0
ZSgpKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldENvbXBvc2l0ZWRCb3VuZHMoYnVpbGRPYmpl
Y3RGb3JJbnRSZWN0KGJhY2tpbmctPmNvbXBvc2l0ZWRCb3VuZHMoKSkpOworICAgIH0KKworICAg
IC8vIFByb2Nlc3MgY2hpbGRyZW4gbGF5ZXJzLgorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+ID4gY2hpbGRyZW5BcnJheSA9IFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj46OmNyZWF0ZSgpOwor
CisgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOworCisgICAgLy8g
Q2hlY2sgaWYgd2UgaGF2ZSBhIHJlZmxlY3Rpb24gbGF5ZXIuCisgICAgaWYgKHJlbmRlckxheWVy
LT5yZWZsZWN0aW9uTGF5ZXIoKSkKKyAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWls
ZE9iamVjdEZvckxheWVyKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkpOworCisgICAg
aWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgICAgIGlmIChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5uZWdaT3JkZXJM
aXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNp
emUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkK
KyAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5
ZXIobmVnWk9yZGVyTGlzdC0+YXQoaSkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSByZW5kZXJMYXllci0+bm9ybWFs
Rmxvd0xpc3QoKSkgeworICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93TGlzdC0+
c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisg
ICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobm9y
bWFsRmxvd0xpc3QtPmF0KGkpKSk7CisgICAgfQorICAgIAorICAgIGlmIChyZW5kZXJMYXllci0+
aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4q
IHBvc1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAg
ICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICAgICAg
Y2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHBvc1pPcmRlckxpc3Qt
PmF0KGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsYXllck9iamVjdC0+c2V0Q2hpbGRM
YXllcnMoY2hpbGRyZW5BcnJheSk7CisgICAgCisgICAgcmV0dXJuIGxheWVyT2JqZWN0OworfQor
CitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6SW50UmVjdDo6Y3JlYXRlKCkK
KyAgICAgICAgLnNldFgocmVjdC54KCkpCisgICAgICAgIC5zZXRZKHJlY3QueSgpKQorICAgICAg
ICAuc2V0V2lkdGgocmVjdC53aWR0aCgpKQorICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0
KCkpLnJlbGVhc2UoKTsKK30KKworU3RyaW5nIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5k
KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBpZiAoIWxheWVyKQorICAgICAgICBy
ZXR1cm4gIiI7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtX2RvY3VtZW50TGF5ZXJUb0lkTWFw
LmdldChsYXllcik7CisgICAgaWYgKGlkZW50aWZpZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWRl
bnRpZmllciA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpOworICAgICAg
ICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnNldChsYXllciwgaWRlbnRpZmllcik7CisgICAgICAg
IG1faWRUb0xheWVyLnNldChpZGVudGlmaWVyLCBsYXllcik7CisgICAgfQorICAgIHJldHVybiBp
ZGVudGlmaWVyOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp1bmJpbmQoY29u
c3QgUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIFN0cmluZyBpZGVudGlmaWVyID0gbV9kb2N1
bWVudExheWVyVG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlmIChpZGVudGlmaWVyLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnJlbW92ZShs
YXllcik7CisgICAgbV9pZFRvTGF5ZXIucmVtb3ZlKGlkZW50aWZpZXIpOworfQorCit2b2lkIElu
c3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2RlSWRGb3JMYXllcklkKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBpbnQqIHJlc3VsdE5vZGVJZCkKK3sKKyAg
ICAvLyBPYnRhaW4gdGhlIFJlbmRlckxheWVyIGZyb20gdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQu
CisgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gbV9pZFRvTGF5ZXIuZ2V0KGxh
eWVySWQpOworICAgIAorICAgIC8vIFNlbmQgYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBy
ZWdpc3RlcmVkIGxheWVyIGlkLgorICAgIGlmICghcmVuZGVyTGF5ZXIpIHsKKyAgICAgICAgKmVy
cm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIGEgYm91bmQgbGF5ZXIgZm9yIHRoZSBwcm92aWRl
ZCBpZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gR2V0IHRoZSBub2Rl
IGlkIGZyb20gdGhlIERPTSBhZ2VudCBhbmQgcmV0dXJuIGl0IHRvIHRoZSBmcm9udC1lbmQuCisg
ICAgSW5zcGVjdG9yRE9NQWdlbnQqIGluc3BlY3RvckRPTUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpOworICAgICpyZXN1bHROb2RlSWQgPSBpbnNwZWN0
b3JET01BZ2VudC0+cHVzaE5vZGVQYXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKHJlbmRlckxh
eWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUikKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZiYTVmMjE5YWFkNmU0YmE1MjJjZTEyZTc0NjQwMTViN2EyZGQ4NGQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuaApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3BlY3RvckxheWVyVHJlZUFnZW50X2gK
KyNkZWZpbmUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKworI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVHlwZUJ1aWxkZXIuaCIKKyNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zcGVj
dG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOworY2xhc3MgUGFnZTsKKwordHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50
IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4sIHB1
YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TGF5ZXJUcmVlQ29tbWFuZEhhbmRsZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckxheWVyVHJlZUFnZW50
PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVj
dG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGF0
ZSwgcGFnZSkpOworICAgIH0KKyAgICB+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCopOworICAgIHZpcnR1
YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3RvcmUoKTsKKyAg
ICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOworICAgIHZv
aWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKKworICAgIC8vIENh
bGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmly
dHVhbCB2b2lkIGdldExheWVyVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6
TGF5ZXJUcmVlOjpMYXllcj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm9kZUlkRm9yTGF5ZXJJZChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgaW50KiByZXN1bHROb2RlSWQpOwor
Citwcml2YXRlOgorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqKTsKKworICAgIC8vIFJlbmRlckxheWVyLXJlbGF0
ZWQgbWV0aG9kcy4KKyAgICBTdHJpbmcgYmluZChjb25zdCBSZW5kZXJMYXllciopOworICAgIHZv
aWQgdW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CisKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvclJvb3RMYXllcigpOyAgIAorICAg
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9y
TGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRy
ZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAg
ICAgIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6
TGF5ZXJUcmVlKiBtX2Zyb250ZW5kOworICAgIGJvb2wgbV9lbmFibGVkOworCisgICAgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKKyAg
ICBIYXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjEx
NmY5NDMxM2MyYjI4N2JlYjc4ZWU5ZDcyZTE3YjQ1Zi4uN2UyNzA5ZjcyZWM4YzdmZWIzMzE3MGIz
ZWUwMjM4NWExZWM2YTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OworY2xhc3MgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKQEAg
LTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAg
ICAgICAgLCBtX2luc3BlY3RvclBhZ2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NT
QWdlbnQoMCkKKyAgICAgICAgLCBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAg
ICwgbV9pbnNwZWN0b3JDb25zb2xlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFn
ZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAg
KzE1NSwxOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNh
bnZhc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAg
IHZvaWQgc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yQ2FudmFzQWdlbnQgPSBhZ2VudDsgfQogCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBpbnNwZWN0b3JM
YXllclRyZWVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7
IH0KKyAgICB2b2lkIHNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3BlY3RvckxheWVyVHJl
ZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owog
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9pbnNwZWN0b3JQYWdlQWdlbnQ7CiAgICAgSW5zcGVj
dG9yQ1NTQWdlbnQqIG1faW5zcGVjdG9yQ1NTQWdlbnQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVy
VHJlZUFnZW50OworI2VuZGlmCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3Rv
ckNvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2Vu
dDsKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3NzAuLmEwYWM1
YTE0YzUxNGE1MzUxMjU1NTdmODEyZTZhMjA2ZWVjZmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCkBAIC01MDgsNiArNTA5LDE4IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0
ZVR5cGUgdXBkYXRlCiAKICAgICBpZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAg
ICAgICAgZW5hYmxlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUg
aW5zcGVjdG9yIHRoYXQgdGhlIGxheWVyIHRyZWUgaGFzIGNoYW5nZWQuCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UocGFnZSgpKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIpCit7CisgICAgLy8gSW5mb3JtIHRoZSBpbnNwZWN0b3IgdGhh
dCB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgd2FzIGRlc3Ryb3llZC4KKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKHBhZ2UoKSwgcmVuZGVyTGF5ZXIpOwor
CisgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKKyAgICAtLW1fY29tcG9z
aXRlZExheWVyQ291bnQ7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNTE5MzQxMWEyZDcx
MGU3OWUyMzhmNTEwYmY3NGFlMGU2YTFmZGNhMS4uZTg5ZWM3OWQyYTE0MjM5YzFlOGRhZjdkYzQy
MjY0NWRlYzg2NzkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaApAQCAtMTcwLDExICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckJhY2tpbmdGb3JBbGxMYXllcnMoKTsKICAgICAKICAgICB2b2lkIGxheWVyQmVjYW1lQ29t
cG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIHsgKyttX2NvbXBvc2l0ZWRMYXllckNvdW50OyB9
Ci0gICAgdm9pZCBsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKLSAgICAg
ICAgLS1tX2NvbXBvc2l0ZWRMYXllckNvdW50OwotICAgIH0KKyAgICB2b2lkIGxheWVyQmVjYW1l
Tm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIAogI2lmIEVOQUJMRShWSURF
TykKICAgICAvLyBVc2UgYnkgUmVuZGVyVmlkZW8gdG8gYXNrIGlmIGl0IHNob3VsZCB0cnkgdG8g
dXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlYTdjOTYzZWI3MmFjMDJhMjBm
NTU2ZDM2MGYwNTgyNTFkYWJiZTIuLjU1MDRjOTU5ODdkZDUzMjU2MmMxMmI2MzkyMWU2ZjE3OGEw
OTAwZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wNCAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgdGhlIGJhY2tlbmQgZm9yIGV4
cG9zaW5nIHRoZSBsYXllciB0cmVlIHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBMYXlvdXRUZXN0IHRo
YXQgZXhlcmNpc2VzIHRoZSB2YXJpb3VzIEFQSXMgYW5kIGV2ZW50cyBleHBvc2VkIGJ5IHRoZSBM
YXllclRyZWVBZ2VudC4KKyAgICAgICAgVGhpcyB0ZXN0IGlzIHNraXBwZWQgb24gRUZMIHdoZXJl
IEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIGlzIG5vdCBhdmFpbGFibGUuCisKKyAgICAgICAgKiBp
bnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEyLTA0ICBKdXNzaSBLdWtr
b25lbiAgPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogICAgICAgICBNYWtlIHN2Zy9kb20v
dmlld3NwZWMtcGFyc2VyLSouaHRtbCBub24tZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
Njk1NGFhN2I4MjNkMWI1MzhiNGIzMjlmOTNlYTAwNzFkNTBmMjhjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzYzIEBACisKKz09PSBHZXQgdGhlIERvY3VtZW50ID09PQorCitQQVNTCisK
Kz09PSBFbmFibGUgdGhlIExheWVyVHJlZSBhZ2VudCA9PT0KKworUEFTUworCis9PT0gR2V0IHRo
ZSBpbml0aWFsIGxheWVyIHRyZWUgPT09CisKK1BBU1MKKworeworICAgICJsYXllcklkIjogInN0
cmluZyIsCisgICAgImJvdW5kcyI6IHsKKyAgICAgICAgIngiOiAwLAorICAgICAgICAieSI6IDAs
CisgICAgICAgICJ3aWR0aCI6IDgwMCwKKyAgICAgICAgImhlaWdodCI6IDYwMAorICAgIH0sCisg
ICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgIm1lbW9yeSI6IDAsCisgICAgImNvbXBvc2l0
ZWRCb3VuZHMiOiB7CisgICAgICAgICJ4IjogMCwKKyAgICAgICAgInkiOiAwLAorICAgICAgICAi
d2lkdGgiOiA4MDAsCisgICAgICAgICJoZWlnaHQiOiA2MDAKKyAgICB9LAorICAgICJjaGlsZExh
eWVycyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAg
ICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAid2lkdGgiOiA4MDAsCisgICAgICAgICAg
ICAgICAgImhlaWdodCI6IDYwMAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAg
ICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQi
OiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVy
SWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5
IjogMTAwMDAsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAg
ICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInki
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAxMDAwMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGls
ZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAgICJtZW1vcnkiOiA0MDAwMCwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0
ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAx
MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6
ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lk
dGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVt
b3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3Vu
ZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhl
aWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAg
ICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6
ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJoZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJz
IjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDIzNywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxNDQKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAgICJtZW1vcnkiOiAxMzY1MTIsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3Np
dGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjog
MjM3LAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDE0NAorICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KKworPT09IE1l
c3NhZ2UgdGhlIHBhZ2UgdG8gYWRkIGEgbmV3IGNvbXBvc2l0ZWQgbGF5ZXIgPT09CisKK1BBU1MK
KworPT09IEdldCB0aGUgbW9kaWZpZWQgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCit7CisgICAg
ImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAiYm91bmRzIjogeworICAgICAgICAieCI6IDAsCisg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgIndpZHRoIjogNzg1LAorICAgICAgICAiaGVpZ2h0Ijog
NjAwCisgICAgfSwKKyAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAibWVtb3J5IjogMCwK
KyAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgIngiOiAwLAorICAgICAgICAieSI6
IDAsCisgICAgICAgICJ3aWR0aCI6IDc4NSwKKyAgICAgICAgImhlaWdodCI6IDMwOTYKKyAgICB9
LAorICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxheWVySWQi
OiAic3RyaW5nIiwKKyAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgIngi
OiAwLAorICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAid2lkdGgiOiA3
ODUsCisgICAgICAgICAgICAgICAgImhlaWdodCI6IDYwMAorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICJjaGlsZExheWVycyI6
IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0
cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAi
aGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJz
IjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVk
Qm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAs
CisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0
cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6
IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnki
OiAxMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0
IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3
aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiA0MDAwMCwKKyAgICAgICAgICAgICAg
ICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAw
CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVy
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJi
b3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibWVtb3J5IjogMTAwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4
IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0
cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAid2lkdGgiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhl
aWdodCI6IDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlz
Q29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBb
XQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjog
eworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJoZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAg
ICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3
aWR0aCI6IDM3MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAzMDk2CisgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogNDU4MjA4MCwKKyAgICAgICAgICAg
ICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAi
eCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAid2lkdGgiOiAzNzAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0Ijog
MzA5NgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRM
YXllcnMiOiBbXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAi
Ym91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAs
CisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAgICJtZW1vcnkiOiAxMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBv
c2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
OiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfQorICAgIF0KK30KKworPT09IE9i
dGFpbiB0aGUgbm9kZSBpZCBmb3IgdGhlIG5ld2x5IGluc2VydGVkIGxheWVyID09PQorCitQQVNT
CisKKz09PSBHZXQgYXR0cmlidXRlcyBmb3IgdGhlIG5ld2x5IGluc2VydGVkIG5vZGUgPT09CisK
K1BBU1MKKworPT09IFRlc3QgY29tcGxldGUsIGFsbCBleHBlY3RlZCBjb25kaXRpb25zIG1ldCA9
PT0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRy
ZWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzA0OTAxYTUxNThlNWY5YmNmMGM0MDMwZTA1MGM0ODk1MGJmNTJkZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVl
Lmh0bWwKQEAgLTAsMCArMSwyNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNv
dXJjZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGFkZENvbXBvc2l0ZWRMYXllcigpCit7CisgICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LmNsYXNz
TmFtZSA9ICJjb21wb3NpdGVkIjsKKyAgICBlbGVtZW50LmlkID0gImxhc3QtZWxlbWVudCI7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKK307CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHZhciBpbml0aWFsTGF5ZXJUcmVlOworICAgIHZhciBldmVudHNDb3VudCA9
IDA7CisKKyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsiTGF5ZXJUcmVlLmxheWVyVHJl
ZURpZENoYW5nZSJdID0gZnVuY3Rpb24gKG1lc3NhZ2VPYmplY3QpIHsKKyAgICAgICAgZXZlbnRz
Q291bnQrKzsKKyAgICB9OworCisgICAgZ2V0RG9jdW1lbnQoKTsKKyAgICAKKyAgICBmdW5jdGlv
biBnZXREb2N1bWVudCgpCisgICAgeworICAgICAgICAvLyBXZSBtdXN0IGZpcnN0IGdldCB0aGUg
ZG9jdW1lbnQgc28gdGhhdCBsYXRlciBvbiB3ZSBtYXkgZ2V0IHNlbnNpYmxlIG5vZGVJZHMuCisg
ICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCB0aGUgRG9jdW1lbnQiLAorICAg
ICAgICAgICAgY29tbWFuZDogIkRPTS5nZXREb2N1bWVudCIsCisgICAgICAgICAgICBwYXJhbWV0
ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBlbmFibGVMYXllclRyZWVBZ2VudAorICAg
ICAgICB9KTsKKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIGVuYWJsZUxheWVyVHJlZUFnZW50
KHJlc3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkVuYWJs
ZSB0aGUgTGF5ZXJUcmVlIGFnZW50IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUu
ZW5hYmxlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJh
Y2s6IGdldEluaXRpYWxMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0
aW9uIGdldEluaXRpYWxMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgc3RlcCh7Cisg
ICAgICAgICAgICBuYW1lOiAiR2V0IHRoZSBpbml0aWFsIGxheWVyIHRyZWUiLAorICAgICAgICAg
ICAgY29tbWFuZDogIkxheWVyVHJlZS5nZXRMYXllclRyZWUiLAorICAgICAgICAgICAgcGFyYW1l
dGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ290SW5pdGlhbExheWVyVHJlZQorICAg
ICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ290SW5pdGlhbExheWVyVHJlZShyZXN1
bHQpCisgICAgeworICAgICAgICBpbml0aWFsTGF5ZXJUcmVlID0gcmVzdWx0LmxheWVyVHJlZTsK
KworICAgICAgICBkdW1wTGF5ZXJUcmVlKGluaXRpYWxMYXllclRyZWUpOworCisgICAgICAgIHN0
ZXAoeworICAgICAgICAgICAgbmFtZTogIk1lc3NhZ2UgdGhlIHBhZ2UgdG8gYWRkIGEgbmV3IGNv
bXBvc2l0ZWQgbGF5ZXIiLAorICAgICAgICAgICAgY29tbWFuZDogIlJ1bnRpbWUuZXZhbHVhdGUi
LAorICAgICAgICAgICAgcGFyYW1ldGVyczogeyJleHByZXNzaW9uIjogImFkZENvbXBvc2l0ZWRM
YXllcigpIn0sCisgICAgICAgICAgICBjYWxsYmFjazogZ2V0TW9kaWZpZWRMYXllclRyZWUKKyAg
ICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdldE1vZGlmaWVkTGF5ZXJUcmVlKHJl
c3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCB0aGUg
bW9kaWZpZWQgbGF5ZXIgdHJlZSIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmdl
dExheWVyVHJlZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNh
bGxiYWNrOiBnb3RNb2RpZmllZExheWVyVHJlZQorICAgICAgICB9KTsKKyAgICB9OworCisgICAg
dmFyIGxheWVyQ291bnQgPSAwOworCisgICAgZnVuY3Rpb24gZ290TW9kaWZpZWRMYXllclRyZWUo
cmVzdWx0KQorICAgIHsKKyAgICAgICAgZHVtcExheWVyVHJlZShyZXN1bHQubGF5ZXJUcmVlKTsK
KworICAgICAgICB2YXIgbXV0YXRpb25zID0gbGF5ZXJUcmVlTXV0YXRpb25zKGluaXRpYWxMYXll
clRyZWUsIHJlc3VsdC5sYXllclRyZWUpOworICAgICAgICB2YXIgbGFzdElkID0gbXV0YXRpb25z
LmFkZGl0aW9uc1swXTsKKworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJPYnRh
aW4gdGhlIG5vZGUgaWQgZm9yIHRoZSBuZXdseSBpbnNlcnRlZCBsYXllciIsCisgICAgICAgICAg
ICBjb21tYW5kOiAiTGF5ZXJUcmVlLm5vZGVJZEZvckxheWVySWQiLAorICAgICAgICAgICAgcGFy
YW1ldGVyczogeyJsYXllcklkIjogbGFzdElkfSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnb3RO
b2RlSWRGb3JMYXN0TGF5ZXIKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdv
dE5vZGVJZEZvckxhc3RMYXllcihyZXN1bHQpCisgICAgeworICAgICAgICB2YXIgaWQgPSByZXN1
bHQubm9kZUlkOworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgYXR0cmli
dXRlcyBmb3IgdGhlIG5ld2x5IGluc2VydGVkIG5vZGUiLAorICAgICAgICAgICAgY29tbWFuZDog
IkRPTS5nZXRBdHRyaWJ1dGVzIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjog
aWR9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE5vZGVBdHRyaWJ1dGVzCisgICAgICAgIH0p
OworICAgIH07CisKKyAgICBmdW5jdGlvbiBnb3ROb2RlQXR0cmlidXRlcyhyZXN1bHQpCisgICAg
eworICAgICAgICB2YXIgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNEaWN0aW9uYXJ5RnJvbUFycmF5
KHJlc3VsdC5hdHRyaWJ1dGVzKTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMuaWQgIT09ICJsYXN0
LWVsZW1lbnQiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IERpZCBub3Qg
b2J0YWluIHRoZSBleHBlY3RlZCBlbGVtZW50IGZvciB0aGUgbGFzdCBpbnNlcnRlZCBsYXllci4i
KTsKKworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGZpbmlz
aFRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKCFldmVudHNDb3VudCkKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJGQUlMOiBEaWQgbm90IHJlY2VpdmUgbGF5ZXJUcmVlRGlkQ2hhbmdl
IGV2ZW50cy4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IlxuPT09IFRlc3QgY29tcGxldGUsIGFsbCBleHBlY3RlZCBjb25kaXRpb25zIG1ldCA9PT0iKTsK
KworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH07CisKKyAgICBm
dW5jdGlvbiBsYXllclRyZWVNdXRhdGlvbnMob2xkTGF5ZXJUcmVlLCBuZXdMYXllclRyZWUpCisg
ICAgeworICAgICAgICB2YXIgb2xkS2V5cyA9IE9iamVjdC5rZXlzKGZsYXR0ZW5lZExheWVyVHJl
ZShvbGRMYXllclRyZWUpKTsKKyAgICAgICAgdmFyIG5ld0tleXMgPSBPYmplY3Qua2V5cyhmbGF0
dGVuZWRMYXllclRyZWUobmV3TGF5ZXJUcmVlKSk7CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgIGFkZGl0aW9uczogbmV3S2V5cy5maWx0ZXIoZnVuY3Rpb24gKGtleSkgeworICAgICAg
ICAgICAgICAgIHJldHVybiAob2xkS2V5cy5pbmRleE9mKGtleSkgPT09IC0xKTsKKyAgICAgICAg
ICAgIH0pLAorICAgICAgICAgICAgcmVtb3ZhbHM6IG9sZEtleXMuZmlsdGVyKGZ1bmN0aW9uIChr
ZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG5ld0tleXMuaW5kZXhPZihrZXkpID09PSAt
MSk7CisgICAgICAgICAgICB9KQorICAgICAgICB9OworICAgIH07CisKKyAgICBmdW5jdGlvbiBm
bGF0dGVuZWRMYXllclRyZWUobGF5ZXJUcmVlKQorICAgIHsKKyAgICAgICAgdmFyIGxheWVyQnlJ
ZHMgPSB7fTsKKworICAgICAgICBmdW5jdGlvbiByZWN1cnNlKGxheWVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsYXllckJ5SWRzW2xheWVyLmxheWVySWRdID0gbGF5ZXI7CisgICAgICAgICAg
ICBpZiAobGF5ZXIuY2hpbGRMYXllcnMpCisgICAgICAgICAgICAgICAgbGF5ZXIuY2hpbGRMYXll
cnMuZm9yRWFjaChyZWN1cnNlKTsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHJlY3Vy
c2UobGF5ZXJUcmVlKTsKKworICAgICAgICByZXR1cm4gbGF5ZXJCeUlkczsKKyAgICB9OworCisg
ICAgZnVuY3Rpb24gYXR0cmlidXRlc0RpY3Rpb25hcnlGcm9tQXJyYXkoYXR0cmlidXRlcykKKyAg
ICB7CisgICAgICAgIHZhciBkaWN0aW9uYXJ5ID0ge30KKyAgICAgICAgZm9yICh2YXIgaSA9IDAs
IGNvdW50ID0gYXR0cmlidXRlcy5sZW5ndGg7IGkgPCBjb3VudDsgaSArPSAyKSB7CisgICAgICAg
ICAgICBkaWN0aW9uYXJ5W2F0dHJpYnV0ZXNbaV1dID0gYXR0cmlidXRlc1tpICsgMV07CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnk7CisgICAgfTsKKworICAgIGZ1bmN0aW9u
IGR1bXBMYXllclRyZWUobGF5ZXJUcmVlKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcmVwbGFj
ZXIoa2V5LCB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGtleSA9PT0gImxh
eWVySWQiID8gdHlwZW9mKHZhbHVlKSA6IHZhbHVlOworICAgICAgICB9OworICAgICAgICAKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlxuIiArIEpTT04uc3RyaW5naWZ5KGxheWVyVHJlZSwg
cmVwbGFjZXIsICIgICAgIikpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBzdGVwKHRlc3QpCisg
ICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG49PT0gIiArIHRlc3QubmFtZSArICIg
PT09XG4iKQorICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKHRlc3QuY29tbWFuZCwg
dGVzdC5wYXJhbWV0ZXJzLCBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KSB7CisgICAgICAgICAgICBp
ZiAobWVzc2FnZU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiZXJyb3IiKSkgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZU9iamVjdC5lcnJvci5tZXNz
YWdlICsgIiAoIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSArICIpIik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNT
Iik7CisgICAgICAgICAgICB0ZXN0LmNhbGxiYWNrKG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKKyAg
ICAgICAgfSk7CisgICAgfTsKKworfTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv
bnRlbnRMb2FkZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgcnVuVGVzdCgpOworfSwgZmFsc2UpOwor
Cis8L3NjcmlwdD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAKKyAgICBkaXYgewor
ICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHRvcDogMDsKKyAgICAgICAgbGVm
dDogMDsKKyAgICB9CisgICAgICAKKyAgICAucmVndWxhciB7CisgICAgICAgIHdpZHRoOiAxMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxh
Y2s7CisgICAgfQorCisgICAgLmNvbXBvc2l0ZWQgeworICAgICAgICB0b3A6IDI1cHg7CisgICAg
ICAgIGxlZnQ6IDI1cHg7CisgICAgICAgIHdpZHRoOiA1MHB4OworICAgICAgICBoZWlnaHQ6IDUw
cHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAgIC13ZWJraXQtdHJh
bnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgIH0KKyAgICAgIAorICAgIC5vZmZzZXQgeworICAg
ICAgICBsZWZ0OiAyMDBweDsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVoo
MCk7CisgICAgfQorCisgICAgYnV0dG9uIHsKKyAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7Cisg
ICAgICAgIG1hcmdpbi10b3A6IDEyMHB4OworICAgIH0KKyAgICAgIAorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorCisgICAgPGRpdiBjbGFzcz0icmVndWxhciI+PC9kaXY+CisKKyAgICA8ZGl2
IGNsYXNzPSJjb21wb3NpdGVkIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+PC9k
aXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJyZWd1bGFyIG9mZnNldCI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorICAgIDwvZGl2PgorCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDUwMjNjOGE1YmEzNDM1YjkzYmE0NDdmM2I4MmE5NzY1NDIzMmNhYWEuLjg4MTdiM2Y5OWE5Zjg2
YWFkMmNiM2RiNzdhNDlmZTA5ZTc1MDFlZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xNjgwLDYgKzE2ODAsOSBAQCB3ZWJraXQub3JnL2IvMTAwODU1
IGlldGVzdGNlbnRlci9jc3MzL3RleHQvdGV4dHNoYWRvdy0wMDguaHRtIFsgSW1hZ2VPbmx5RmFp
bHVyZQogd2Via2l0Lm9yZy9iLzEwMDg0NiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItcGF1
c2UtZGVkaWNhdGVkLXdvcmtlci5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTAwODQ2IGlu
c3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci10ZXJtaW5hdGUtZGVkaWNhdGVkLXdvcmtlci13aGls
ZS1wYXVzZWQuaHRtbCBbIFNraXAgXQogCisjIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIGlzIHJl
cXVpcmUgZm9yIExheWVyIHRyZWUgaW5zcGVjdGlvbiB0ZXN0IHRvIHBhc3MKK0J1ZyhFRkwpIHdl
YmtpdC5vcmcvYi8xMDM1MTMgaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbCBbIFNr
aXAgXQorCiAjIE5ldyBtZWRpYSB0ZXN0IGludHJvZHVjZWQgaW4gcjEzMzY2MCBmYWlscy4KIHdl
YmtpdC5vcmcvYi8xMDE0MzkgbWVkaWEvcHJvZ3Jlc3MtZXZlbnRzLWdlbmVyYXRlZC1jb3JyZWN0
bHkuaHRtbCBbIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177708</attachid>
            <date>2012-12-05 02:52:41 -0800</date>
            <delta_ts>2012-12-05 13:52:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121205115004.patch</filename>
            <type>text/plain</type>
            <size>61053</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjYjc1NTQxYzlhYjU4
NTA0NWM5N2I5Mzc5YjExMTQ0ZDJmZGFjMS4uYjI2MmYxMmJiM2JmY2UwZTY4MWFkODA2MDQzNjNl
MzAyZTc3OWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTEyLTA1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2Ugd2l0aCBXZWJDb3JlIHRvIGFjY2VzcworICAgICAgICBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFja2VkIGJ5Cisg
ICAgICAgIHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
IGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVBZ2VudCB3aGlj
aCB3aWxsCisgICAgICAgIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIGNoYW5nZXMgdG8gdGhlIHJl
bmRlciBsYXllciB0cmVlIHZpYSBhIG5ldyBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnQsIHByb3Zp
ZGluZyBhbiBvYmplY3QKKyAgICAgICAgY29udGFpbmluZyB0aGUgZW50aXJlIGhpZXJhcmNoeSBv
ZiBSZW5kZXJMYXllcnMgZm9yIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuIFRoaXMgaGllcmFyY2h5
IGNhbiBiZSBxdWVyaWVkIGF0IGFueQorICAgICAgICB0aW1lIHVzaW5nIHRoZSAuZ2V0TGF5ZXJU
cmVlKCkgbWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudC4gRmluYWxseSwgdGhlIExheWVyVHJl
ZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXllcklkKCkKKyAgICAgICAgbWV0aG9k
IGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBS
ZW5kZXJMYXllciB3aXRoIHRoZSBwcm92aWRlZCBsYXllciBpZC4KKyAgICAgICAgCisgICAgICAg
IEluIHRlcm1zIG9mIGltcGxlbWVudGF0aW9uLCBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFzIGJl
ZW4gY2hhbmdlZCBzdWNoIHRoYXQgaW4gaXRzIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKCkKKyAg
ICAgICAgbWV0aG9kIHdlIGNhbGwgdGhlIGxheWVyVHJlZURpZENoYW5nZSBtZXRob2Qgb24gdGhl
IEluc3BlY3RvckxheWVyVHJlZUFnZW50IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVl
Lmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbjogRGVmaW5lIG5ldyB0eXBlcyBJbnRSZWN0ICh4LCB5LCB3aWR0aCwgaGVpZ2h0
KSBhbmQgTGF5ZXIsIHdoaWNoIGhvbGRzIHRoZSBpbmZvcm1hdGlvbiBmb3IgYQorICAgICAgICBS
ZW5kZXJMYXllciAobGF5ZXJJZCwgYm91bmRzLCBpc0NvbXBvc2l0ZWQsIG1lbW9yeSwgY29tcG9z
aXRlZEJvdW5kcykgYW5kIGl0cyBjaGlsZHJlbiAoY2hpbGRMYXllcnMpLiBXZSBhbHNvIGRlZmlu
ZSB0aGUKKyAgICAgICAgbWV0aG9kcyBvZiB0aGUgTGF5ZXJUcmVlQWdlbnQgb2JqZWN0IChlbmFi
bGUsIGRpc2FibGUsIGdldExheWVyVHJlZSwgbm9kZUlkRm9yTGF5ZXJJZCkgYW5kIHRoZSBsYXll
clRyZWVEaWRDaGFuZ2UgZXZlbnQgaXQgIAorICAgICAgICBmaXJlcy4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQ
YXRoRm9yUmVuZGVyTGF5ZXJUb0Zyb250ZW5kKTogTmV3IG1ldGhvZCBmYWNpbGl0YXRpbmcgcHVz
aGluZyB0aGUgbm9kZSBhc3NvY2lhdGVkIHdpdGggCisgICAgICAgIGEgZ2l2ZW4gUmVuZGVyTGF5
ZXIgdG8gdGhlIGZyb250LWVuZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3ll
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExheWVyVHJlZUFnZW50U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFn
ZW50OjpsYXllclRyZWVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVy
KTogQnVpbGQgdGhlIGVudGlyZSBoaWVyYXJjaHkgb2YgUmVuZGVyTGF5ZXJzIGZyb20gdGhlIHBy
b3ZpZGVkIAorICAgICAgICBSZW5kZXJMYXllci4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6bm9kZUlkRm9yTGF5ZXJJZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnN0cnVtZW50aW5nQWdlbnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKEluc3Ry
dW1lbnRpbmdBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6
aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGlu
Z0FnZW50czo6c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6IENhbGwgdGhlIGxheWVyVHJl
ZURpZENoYW5nZSBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50IHZpYSB0aGUgCisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiB0byBpbmZvcm0gdGhlIGZyb250LWVuZCB0aGF0IHRo
ZSBSZW5kZXJMYXllciBoaWVyYXJjaHkgaGFzIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25D
b21wb3NpdGVkKTogQ2FsbCB0aGUgcmVuZGVyTGF5ZXJEZXN0cm95ZWQgbWV0aG9kIG9uIHRoZSBM
YXllclRyZWVBZ2VudCB2aWEgCisgICAgICAgIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24g
dG8gdW5iaW5kIHRoZSBsYXllciB0aGF0IGlzIGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIChSZW5kZXJMYXllckNv
bXBvc2l0b3IpOgorCiAyMDEyLTEyLTA0ICBNaWNoYWVsIFBydWV0dCAgPG1pY2hhZWxANjhrLm9y
Zz4KIAogICAgICAgICBbSlNDXSBHZW5lcmF0ZSB2aXNpdENoaWxkcmVuKCkgZm9yIHVuY3VzdG9t
aXplZCBFdmVudFRhcmdldCBpbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDk1MGEz
NjA5YTdmYTBhOTBjNTUzOTU0ZDMzNmNkMjI3ODcxMGMwZTUuLmVjMjI0YTI3ZDRlNzI3MWEzYjg1
NWMwODRiNzM3MmFhNGI5NjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNTk5LDYgKzE1
OTksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rv
cnkuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDVhZjdlZjU2MWMwN2ZkYjkyOGU4NDQ1M2IyYmU4ZmM3ZTQ3YzYwNjAuLmI2ZDRiMWEyMWEx
MDY1NGZiZGUzOTk4NzA2ZDBjOGEzODZiZTRhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQpAQCAtMzc0Miw2ICszNzQyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyOTkwMjFjOWUy
ZmMzNmVjMmFiYzhjNmRlNWQ0NWE4ZDIwOGE0NGRhLi44NjYzMDAyMTY0MTgzZWZiZDBlNmQ2NmJh
NmY1ZjZlOTNlOTk5OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTc3Myw2ICs3NzMsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcCBcCkBAIC0xOTIxLDYgKzE5MjIsNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JI
aXN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBcCisg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5o
IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3MGYuLmIyMGU1Y2JmMmY1
ZWQ5OTdhZDRlYzQzYzkzOWYwZWM2ZWVkNjM2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI4ODIs
NiArMjg4Miw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAnLAor
ICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZTk5NDgwYzlkNDAxODI3Y2NiNDJkOWEyN2E4ZDZlNzRl
OGU0NzEzOC4uMzMyMTk1MWNhMzJiODRhYzQ1MzMxY2QwZjE1NjRlYzVmMmVmMWM2NCAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc1NDcwLDYg
Kzc1NDcwLDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAiCisJCQkJPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIgogCQkJCT4KIAkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MGZlMzc4MzRmNzllNmNmMWNjZDFhNTRjNWRlZGQy
NGU5NDlhOGZiLi5kYTNiNTUzYjM2ZmRmMzcyMjM5ZmFmNDM5M2RlYzk4MmZiZmMwNGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xOTEwLDYgKzE5MTAsOCBAQAogCQk3MTkwNERFQTE1NkE2MzNBMDAxRTFCQTUgLyogRE9NU1ZH
Vmlld1NwZWNJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNW
R1ZpZXdTcGVjSW50ZXJuYWwuaCAqLzsgfTsKIAkJNzFBNTdERjExNTRCRTI1QzAwMDlEMTIwIC8q
IFNWR1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzFBNTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMu
Y3BwICovOyB9OwogCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdE
RjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLzsgfTsKKwkJNzFCMUUx
MjUxNjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIxRTEyNDE2NDA0OENDMDBC
MTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLzsgfTsKKwkJNzFCMUUxMjYxNjQw
NDkxQTAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjFFMTIzMTY0MDQ4Q0MwMEIxODgw
QSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi87IH07CiAJCTcxQ0M3QTIwMTUyQTBC
RkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQ0M3QTFGMTUyQTBCRkUwMDlFRUFGOSAv
KiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDExNTY4MTk3NjAw
ODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MURDQjZGRjE1NjgxOTc2MDA4NjIyNzEgLyogSlNTVkdab29t
QW5kUGFuLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDIxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9v
bUFuZFBhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovOyB9OwpAQCAt
OTE5Myw2ICs5MTk1LDggQEAKIAkJNzE4NTEyMzMxNTY4NjQ5ODAwQzQwOTY3IC8qIERPTVNWR1Zp
ZXdTcGVjSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1NEJFMjVDMDAwOUQxMjAg
LyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTVkdQYXRoVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJBMEJGRTAwOUVFQUY5IC8q
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcxRENCNkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NWR1pvb21BbmRQYW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdab29tQW5kUGFuLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcx
IC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1NWR1pvb21BbmRQYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODI3LDYg
KzE0ODMxLDggQEAKIAkJCQlBQTczMTgzQzE1OTI1NUI5MDBBOTNFNkUgLyogSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGUuY3BwICovLAogCQkJCUFBNzMxODNEMTU5MjU1QjkwMEE5M0U2RSAvKiBJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oICovLAogCQkJCUFBOTAzMEZFMTU3RTE2QTAwMDI3
NjI0NyAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcyAqLywKKwkJCQk3MUIx
RTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovLAor
CQkJCTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
ICovLAogCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwICovLAogCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmplY3RlZFNjcmlwdEhv
c3QuaCAqLywKIAkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyogSW5qZWN0ZWRTY3JpcHRI
b3N0LmlkbCAqLywKQEAgLTIzMzQ0LDYgKzIzMzUwLDcgQEAKIAkJCQk4NTAyQUI1NDBBRDQzOEMw
MDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jR0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1
MDJBQjk4MEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxlbWVudEludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTAyQUI1NjBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVG
dW5jUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjFFMTI1MTY0MDQ4RjcwMEIxODgw
QSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMkFC
OTkwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY1JFbGVtZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg1MDJBQjU4MEFENDM4QzAwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjlBMEFENDM5NEUwMDM3
ODU0MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjIwNSw2ICsyNjIxMiw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk3
MUIxRTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFDIC8qIEFic3RyYWN0RGF0
YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1OTg2OTAwNTc2QjNCIC8q
IEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjlDMTZFMTMwMEMyRTIw
MDJENzk0RSAvKiBBY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNDU0NTM5ZjY2YTlmYmQ1ZTJl
M2UwYWI3Y2Y0NDJjNmY4NzQ2OTIxOC4uYWQyNTA1NTM5MTZhNDBmNjA4ZjVjM2VlNWQwMWM4MGI3
MjNmOWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzI0
Miw1ICszMjQyLDcyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVu
dHMiOiBbXQorICAgIH0sCisgICAgeworICAgICAgICAiZG9tYWluIjogIkxheWVyVHJlZSIsCisg
ICAgICAgICJoaWRkZW4iOiB0cnVlLAorICAgICAgICAidHlwZXMiOiBbCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgImlkIjogIkxheWVySWQiLAorICAgICAgICAgICAgICAgICJ0eXBl
IjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBSZW5k
ZXJMYXllciBpZGVudGlmaWVyLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgImlkIjogIkludFJlY3QiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9i
amVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgcmVjdGFuZ2xlLiIsCisg
ICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiVGhlIHggcG9zaXRp
b24uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInkiLCAidHlwZSI6ICJpbnRl
Z2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSB5IHBvc2l0aW9uLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIHdpZHRoIG1ldHJpYy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
aGVpZ2h0IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJUaGUgaGVpZ2h0IG1l
dHJpYy4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICJpZCI6ICJMYXllciIsCisgICAgICAgICAgICAgICAgInR5cGUi
OiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24g
YWJvdXQgYSBjb21wb3NpdGluZyBsYXllci4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVz
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVySWQiLCAiJHJlZiI6ICJM
YXllcklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSB1bmlxdWUgaWQgZm9yIHRoaXMgbGF5ZXIuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdW5kcyIsICIkcmVmIjogIkludFJl
Y3QiLCAiZGVzY3JpcHRpb24iOiAiQm91bmRzIG9mIHRoZSBsYXllci4iIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiaXNDb21wb3NpdGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJk
ZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVyIGlzIGNvbXBvc2l0ZWQu
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9yeSIsICJ0eXBlIjogImlu
dGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiRXN0aW1hdGVkIG1lbW9y
eSB1c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNvbXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2YgdGhlIGNvbXBvc2l0ZWQgbGF5ZXIuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNoaWxkTGF5ZXJzIiwgInR5cGUiOiAiYXJy
YXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIkxheWVyIiB9LCAiZGVz
Y3JpcHRpb24iOiAiQ2hpbGQgbGF5ZXJzLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImNvbW1hbmRzIjogWworICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIkVuYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0aW9uLiIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGlzYWJsZSIs
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIGNvbXBvc2l0aW5nIHRy
ZWUgaW5zcGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICJuYW1lIjogImdldExheWVyVHJlZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlJldHVybnMgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBjdXJyZW50IHBh
Z2UuIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJsYXllclRyZWUiLCAiJHJlZiI6ICJMYXllciIsICJkZXNjcmlwdGlvbiI6ICJM
YXllciB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIgfQorICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAibm9kZUlkRm9yTGF5ZXJJZCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlJldHVybnMgdGhlIG5vZGUgaWQgZm9yIGEgZ2l2ZW4gbGF5ZXIgaWQuIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXll
cklkIiwgIiRyZWYiOiAiTGF5ZXJJZCIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlk
IiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbm9kZSBpZCBmb3Ig
dGhlIGdpdmVuIGxheWVyIGlkLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiCisgICAgICAgICAgICB9CisgICAg
ICAgIF0KICAgICB9XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
bGxJbk9uZS5jcHAKaW5kZXggZDE5YWQyZTBhMDIzYjk5YTg2NDQ1NjdhMzE0Zjc0YTFkZmY3MDcx
Zi4uMDMwMWIxY2NhZGE1MjUzZjBlOWFiZTVlOGIxODY5NjFmODBhOTBmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCkBAIC01OCw2ICs1OCw3
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwIgogI2luY2x1ZGUgIklu
c3BlY3Rvck1lbW9yeUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmNwcCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIyNGNhMTcwYjk2NDcwY2E5
ZTc2MzdkOWQwNDk3ZmExZmUxMDhhOTQuLjc5YWQ4NmRiYjkyZTMyYzQ0M2M5N2RlYWQwNTBiYzcy
ZjUwNWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKQEAg
LTE1MSw2ICsxNTIsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVy
KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAgbV9hZ2VudHMu
YXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSkpOwogCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpjcmVh
dGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlKSk7CisK
ICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKICAgICBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmluaXQobV9pbnNw
ZWN0b3JBZ2VudAogICAgICAgICAsIGNvbnNvbGVBZ2VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOWI4ODkwYWM2NjAyMWE5NDI5ZGI3
NTk0NzdhZGIxY2E0MDMxZmRiNS4uZmUwMWU3M2Y0NWE2MDU0ZTQ3ZTA4YjMwM2MyMGM0YWU5MWVl
YTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCkBAIC01NjMsNiArNTYzLDExIEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQ
YXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgIHJldHVybiBtYXAtPmdldChub2Rl
VG9QdXNoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhGb3JSZW5k
ZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAg
IHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5u
b2RlKCkpOworfQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5kTm9kZUlkKE5vZGUqIG5v
ZGUpCiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGY3Y2M1ZmIx
OGFkMThmMTg5ZDk5NTI2OTNhYTU0ZTBkYjZiYWFlNjIuLjNjZmNlN2I2M2U4YjFjZDEyYzIyNTI1
N2Y2YjliM2E4MzRiMzg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRl
bmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
VmFsdWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xOTksNiArMjAwLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQorICAgIGludCBwdXNo
Tm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKIAog
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5z
cGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
LCBJbnNwZWN0b3JPdmVybGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDBhY2YzMDM4YjZiZGQ1NDkzNmUw
MGUyZDE0NjA4ZTgwMzliNjI4MzQuLmEzYTRjMTg5NWFiYmJmZjk5MzI0YWU3OWMxMjI5OTI4YTVk
MGQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
RE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oIgpAQCAtOTAwLDcgKzkwMSwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudAogICAgICAg
ICAgICAgZG9tU3RvcmFnZUFnZW50LT5jbGVhclJlc291cmNlcygpOwogICAgICAgICBpZiAoSW5z
cGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
RE9NQWdlbnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1bWVudChtYWluRnJhbWUt
PmRvY3VtZW50KCkpOwotCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAg
ICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgICAgIGxheWVy
VHJlZUFnZW50LT5yZXNldCgpOworI2VuZGlmCiAgICAgICAgIGluc3BlY3RvckFnZW50LT5kaWRD
b21taXRMb2FkKCk7CiAgICAgfQogICAgIGlmIChJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKQpAQCAtMTI4OCw2
ICsxMjkyLDIwIEBAIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJCiAgICAgcmV0dXJuIGRldmljZU9y
aWVudGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPmxheWVyVHJlZURp
ZENoYW5nZSgpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5
ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlbmRlckxheWVy
RGVzdHJveWVkKHJlbmRlckxheWVyKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBiYTQ0N2Y4ZDA2
MzU1ZmRjZmRkOTI0NTg3OWQzYjhlN2VmOThkN2QyLi42ZjY3ZGRiOGY2ZmFhY2EyYTRlOWQ3NjM5
MGY4MDdjYjE1ZjU1NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgS1VSTDsK
IGNsYXNzIE5vZGU7CitjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0yNzgsNiAr
Mjc5LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92
ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVudGF0aW9uRGF0YSopOwog
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0YXRpYyB2b2lkIGxheWVy
VHJlZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95
ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwogcHJpdmF0ZToKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5X
b3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkKik7
CkBAIC00NTUsNiArNDYxLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0YXRpYyBEZXZp
Y2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb25JbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRyZWVEaWRDaGFuZ2VJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJMYXllckRlc3Ry
b3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5k
aWYKKwogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CiAjZW5kaWYKIH07CkBAIC0x
NTIwLDYgKzE1MzIsMjAgQEAgaW5saW5lIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW8KICAgICByZXR1cm4gZGV2
aWNlT3JpZW50YXRpb247CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5nZShQ
YWdlKiBwYWdlKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIGxheWVy
VHJlZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSogcGFn
ZSwgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBh
Z2UocGFnZSkpCisgICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVkSW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCByZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbGxlY3RpbmdIVE1MUGFy
c2VFcnJvcnMoUGFnZSogcGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllODY2NWViZGE0NzVi
YzhjYWVjMDk2YzJkMzVmNmJjOTMwOTM3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCkBAIC0wLDAgKzEsMjI1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFn
ZW50LmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCisj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgorI2luY2x1ZGUgIlJlbmRl
ckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5ZXJUcmVlQWdlbnRTdGF0ZSB7CitzdGF0aWMgY29u
c3QgY2hhciBsYXllclRyZWVBZ2VudEVuYWJsZWRbXSA9ICJsYXllclRyZWVBZ2VudEVuYWJsZWQi
OworfTsKKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRl
KiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAgICA6IEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0b3JM
YXllclRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlKQor
ICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kKDApCit7Cit9CisK
K0luc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKQorewor
ICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnNldEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBtX2Zyb250ZW5kID0gZnJv
bnRlbmQtPmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpj
bGVhckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAgICBkaXNhYmxlKDApOwor
fQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXNldCgpCit7CisgICAgbV9kb2N1
bWVudExheWVyVG9JZE1hcC5jbGVhcigpOworICAgIG1faWRUb0xheWVyLmNsZWFyKCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCit7Cisg
ICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5ZXJUcmVl
QWdlbnRFbmFibGVkKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4o
TGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5ZXJUcmVlQWdlbnRFbmFibGVkLCB0cnVlKTsKKyAgICBt
X2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KHRoaXMpOwor
fQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikK
K3sKKyAgICBpZiAoIW1fc3RhdGUtPmdldEJvb2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5
ZXJUcmVlQWdlbnRFbmFibGVkKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGUtPnNldEJv
b2xlYW4oTGF5ZXJUcmVlQWdlbnRTdGF0ZTo6bGF5ZXJUcmVlQWdlbnRFbmFibGVkLCBmYWxzZSk7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCgw
KTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6bGF5ZXJUcmVlRGlkQ2hhbmdl
KCkKK3sKKyAgICBtX2Zyb250ZW5kLT5sYXllclRyZWVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVy
TGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIHVuYmluZChyZW5kZXJMYXllcik7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdldExheWVyVHJlZShFcnJvclN0cmluZyosIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4mIG9iamVjdCkKK3sKKyAgICBvYmpl
Y3QgPSBidWlsZE9iamVjdEZvclJvb3RMYXllcigpOworfQorCitQYXNzUmVmUHRyPFR5cGVCdWls
ZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmpl
Y3RGb3JSb290TGF5ZXIoKQoreworICAgIHJldHVybiBidWlsZE9iamVjdEZvckxheWVyKG1faW5z
cGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpLT5jb21wb3NpdG9yKCkt
PnJvb3RSZW5kZXJMYXllcigpKTsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5ZXIo
UmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAgIGJvb2wgaXNDb21wb3NpdGVkID0gcmVu
ZGVyTGF5ZXItPmlzQ29tcG9zaXRlZCgpOworCisgICAgLy8gQmFzaWMgc2V0IG9mIHByb3BlcnRp
ZXMuCisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBsYXllck9iamVj
dCA9IFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyOjpjcmVhdGUoKQorICAgICAgICAuc2V0
TGF5ZXJJZChiaW5kKHJlbmRlckxheWVyKSkKKyAgICAgICAgLnNldEJvdW5kcyhidWlsZE9iamVj
dEZvckludFJlY3QoZW5jbG9zaW5nSW50UmVjdChyZW5kZXJMYXllci0+bG9jYWxCb3VuZGluZ0Jv
eCgpKSkpCisgICAgICAgIC5zZXRJc0NvbXBvc2l0ZWQoaXNDb21wb3NpdGVkKTsKKworICAgIC8v
IE9wdGlvbmFsIHByb3BlcnRpZXMgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzIG9ubHkuCisgICAgaWYg
KGlzQ29tcG9zaXRlZCkgeworICAgICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBy
ZW5kZXJMYXllci0+YmFja2luZygpOworICAgICAgICBsYXllck9iamVjdC0+c2V0TWVtb3J5KGJh
Y2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCkpOworICAgICAgICBsYXllck9iamVj
dC0+c2V0Q29tcG9zaXRlZEJvdW5kcyhidWlsZE9iamVjdEZvckludFJlY3QoYmFja2luZy0+Y29t
cG9zaXRlZEJvdW5kcygpKSk7CisgICAgfQorCisgICAgLy8gUHJvY2VzcyBjaGlsZHJlbiBsYXll
cnMuCisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj4gPiBjaGlsZHJlbkFycmF5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpMYXllclRyZWU6OkxheWVyPjo6Y3JlYXRlKCk7CisKKyAgICByZW5kZXJMYXllci0+dXBkYXRl
TGF5ZXJMaXN0c0lmTmVlZGVkKCk7CisKKyAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgcmVmbGVj
dGlvbiBsYXllci4KKyAgICBpZiAocmVuZGVyTGF5ZXItPnJlZmxlY3Rpb25MYXllcigpKQorICAg
ICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIocmVuZGVyTGF5
ZXItPnJlZmxlY3Rpb25MYXllcigpKSk7CisKKyAgICBpZiAocmVuZGVyTGF5ZXItPmlzU3RhY2tp
bmdDb250ZXh0KCkpIHsKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3Jk
ZXJMaXN0ID0gcmVuZGVyTGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgc2l6
ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIGNoaWxkcmVu
QXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JMYXllcihuZWdaT3JkZXJMaXN0LT5hdChpKSkp
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3Jt
YWxGbG93TGlzdCA9IHJlbmRlckxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgICAgIHNp
emVfdCBsaXN0U2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgIGNoaWxkcmVuQXJyYXkt
PmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JMYXllcihub3JtYWxGbG93TGlzdC0+YXQoaSkpKTsKKyAg
ICB9CisgICAgCisgICAgaWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7Cisg
ICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IHJlbmRlckxh
eWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBv
c1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1
aWxkT2JqZWN0Rm9yTGF5ZXIocG9zWk9yZGVyTGlzdC0+YXQoaSkpKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxheWVyT2JqZWN0LT5zZXRDaGlsZExheWVycyhjaGlsZHJlbkFycmF5KTsKKyAg
ICAKKyAgICByZXR1cm4gbGF5ZXJPYmplY3Q7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkxheWVyVHJlZTo6SW50UmVjdD4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0
Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpJbnRSZWN0OjpjcmVhdGUoKQorICAgICAgICAuc2V0WChyZWN0LngoKSkK
KyAgICAgICAgLnNldFkocmVjdC55KCkpCisgICAgICAgIC5zZXRXaWR0aChyZWN0LndpZHRoKCkp
CisgICAgICAgIC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSkucmVsZWFzZSgpOworfQorCitTdHJp
bmcgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVy
KQoreworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybiAiIjsKKyAgICBTdHJpbmcgaWRl
bnRpZmllciA9IG1fZG9jdW1lbnRMYXllclRvSWRNYXAuZ2V0KGxheWVyKTsKKyAgICBpZiAoaWRl
bnRpZmllci5pc051bGwoKSkgeworICAgICAgICBpZGVudGlmaWVyID0gSWRlbnRpZmllcnNGYWN0
b3J5OjpjcmVhdGVJZGVudGlmaWVyKCk7CisgICAgICAgIG1fZG9jdW1lbnRMYXllclRvSWRNYXAu
c2V0KGxheWVyLCBpZGVudGlmaWVyKTsKKyAgICAgICAgbV9pZFRvTGF5ZXIuc2V0KGlkZW50aWZp
ZXIsIGxheWVyKTsKKyAgICB9CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnVuYmluZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpCit7
CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXll
cik7CisgICAgaWYgKGlkZW50aWZpZXIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZG9jdW1lbnRMYXllclRvSWRNYXAucmVtb3ZlKGxheWVyKTsKKyAgICBtX2lkVG9MYXllci5y
ZW1vdmUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Om5v
ZGVJZEZvckxheWVySWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGxh
eWVySWQsIGludCogcmVzdWx0Tm9kZUlkKQoreworICAgIC8vIE9idGFpbiB0aGUgUmVuZGVyTGF5
ZXIgZnJvbSB0aGUgaWRlbnRpZmllciBwcm92aWRlZC4KKyAgICBjb25zdCBSZW5kZXJMYXllciog
cmVuZGVyTGF5ZXIgPSBtX2lkVG9MYXllci5nZXQobGF5ZXJJZCk7CisgICAgCisgICAgLy8gU2Vu
ZCBhbiBlcnJvciBpZiB0aGVyZSBpcyBubyBzdWNoIHJlZ2lzdGVyZWQgbGF5ZXIgaWQuCisgICAg
aWYgKCFyZW5kZXJMYXllcikgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IGZp
bmQgYSBib3VuZCBsYXllciBmb3IgdGhlIHByb3ZpZGVkIGlkIjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICAvLyBHZXQgdGhlIG5vZGUgaWQgZnJvbSB0aGUgRE9NIGFnZW50IGFu
ZCByZXR1cm4gaXQgdG8gdGhlIGZyb250LWVuZC4KKyAgICBJbnNwZWN0b3JET01BZ2VudCogaW5z
cGVjdG9yRE9NQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50
KCk7CisgICAgKnJlc3VsdE5vZGVJZCA9IGluc3BlY3RvckRPTUFnZW50LT5wdXNoTm9kZVBhdGhG
b3JSZW5kZXJMYXllclRvRnJvbnRlbmQocmVuZGVyTGF5ZXIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA0NzcyN2IxNmI2NTdjOTBh
ZTdjMDFiYTkwNTEyZmY5NDIzODQ5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC0wLDAgKzEsOTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaAorI2RlZmluZSBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudF9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVjdG9y
QmFzZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JUeXBlQnVpbGRlci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKK2NsYXNzIEluc3RydW1l
bnRpbmdBZ2VudHM7CitjbGFzcyBQYWdlOworCit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsK
KworY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFn
ZW50PEluc3BlY3RvckxheWVyVHJlZUFnZW50PiwgcHVibGljIEluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyOjpMYXllclRyZWVDb21tYW5kSGFuZGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIFBhZ2UqIHBh
Z2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckxheWVyVHJl
ZUFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXRlLCBwYWdlKSk7CisgICAgfQorICAgIH5J
bnNwZWN0b3JMYXllclRyZWVBZ2VudCgpOworCisgICAgdmlydHVhbCB2b2lkIHNldEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKik7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJvbnRlbmQoKTsK
KyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOworICAg
IHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKKworICAgIC8v
IENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAg
dmlydHVhbCB2b2lkIGdldExheWVyVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRl
cjo6TGF5ZXJUcmVlOjpMYXllcj4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm9kZUlkRm9yTGF5ZXJJ
ZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwgaW50KiByZXN1bHROb2RlSWQp
OworCitwcml2YXRlOgorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqKTsKKworICAgIC8vIFJlbmRlckxheWVyLXJl
bGF0ZWQgbWV0aG9kcy4KKyAgICBTdHJpbmcgYmluZChjb25zdCBSZW5kZXJMYXllciopOworICAg
IHZvaWQgdW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CisKKyAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZvclJvb3RMYXllcigpOyAgIAor
ICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IGJ1aWxkT2JqZWN0
Rm9yTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXll
clRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChjb25zdCBJbnRSZWN0Jik7Cisg
ICAgICAgIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAgICBJbnNwZWN0b3JGcm9udGVu
ZDo6TGF5ZXJUcmVlKiBtX2Zyb250ZW5kOworCisgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXll
ciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywg
Y29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjExNmY5NDMxM2MyYjI4N2JlYjc4
ZWU5ZDcyZTE3YjQ1Zi4uN2UyNzA5ZjcyZWM4YzdmZWIzMzE3MGIzZWUwMjM4NWExZWM2YTgxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCkBA
IC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDsKIGNsYXNzIElu
c3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xh
c3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OworY2xhc3MgSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKQEAgLTY1LDYgKzY2LDcgQEAgcHVi
bGljOgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3Rv
clBhZ2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NTQWdlbnQoMCkKKyAgICAgICAg
LCBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JDb25z
b2xlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFnZW50KDApCiAgICAgICAgICwg
bV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAgKzE1NSwxOCBAQCBwdWJsaWM6
CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNhbnZhc0FnZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAgIHZvaWQgc2V0SW5zcGVjdG9y
Q2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yQ2Fu
dmFzQWdlbnQgPSBhZ2VudDsgfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBpbnNwZWN0b3JMYXllclRyZWVBZ2VudCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7IH0KKyAgICB2b2lkIHNldElu
c3BlY3RvckxheWVyVHJlZUFnZW50KEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBhZ2VudCkgeyBt
X2luc3BlY3RvckxheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50OwogICAgIEluc3BlY3RvclBhZ2VB
Z2VudCogbV9pbnNwZWN0b3JQYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1faW5z
cGVjdG9yQ1NTQWdlbnQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIElu
c3BlY3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50OworI2VuZGlm
CiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3RvckNvbnNvbGVBZ2VudDsKICAg
ICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2VudDsKICAgICBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDU2MWViMjhh
NmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3NzAuLmEwYWM1YTE0YzUxNGE1MzUxMjU1NTdm
ODEyZTZhMjA2ZWVjZmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRN
TElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXBw
bGV0LmgiCkBAIC01MDgsNiArNTA5LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRlCiAKICAg
ICBpZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAgICAgICAgZW5hYmxlQ29tcG9z
aXRpbmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUgaW5zcGVjdG9yIHRoYXQgdGhl
IGxheWVyIHRyZWUgaGFzIGNoYW5nZWQuCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
YXllclRyZWVEaWRDaGFuZ2UocGFnZSgpKTsKK30KKwordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIpCit7CisgICAgLy8gSW5mb3JtIHRoZSBpbnNwZWN0b3IgdGhhdCB0aGUgZ2l2ZW4gUmVuZGVy
TGF5ZXIgd2FzIGRlc3Ryb3llZC4KKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlbmRl
ckxheWVyRGVzdHJveWVkKHBhZ2UoKSwgcmVuZGVyTGF5ZXIpOworCisgICAgQVNTRVJUKG1fY29t
cG9zaXRlZExheWVyQ291bnQgPiAwKTsKKyAgICAtLW1fY29tcG9zaXRlZExheWVyQ291bnQ7CiB9
CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNTE5MzQxMWEyZDcxMGU3OWUyMzhmNTEwYmY3NGFl
MGU2YTFmZGNhMS4uZTg5ZWM3OWQyYTE0MjM5YzFlOGRhZjdkYzQyMjY0NWRlYzg2NzkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApA
QCAtMTcwLDExICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckJhY2tpbmdGb3JBbGxM
YXllcnMoKTsKICAgICAKICAgICB2b2lkIGxheWVyQmVjYW1lQ29tcG9zaXRlZChjb25zdCBSZW5k
ZXJMYXllciopIHsgKyttX2NvbXBvc2l0ZWRMYXllckNvdW50OyB9Ci0gICAgdm9pZCBsYXllckJl
Y2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX2NvbXBvc2l0ZWRM
YXllckNvdW50OwotICAgIH0KKyAgICB2b2lkIGxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25z
dCBSZW5kZXJMYXllciopOwogICAgIAogI2lmIEVOQUJMRShWSURFTykKICAgICAvLyBVc2UgYnkg
UmVuZGVyVmlkZW8gdG8gYXNrIGlmIGl0IHNob3VsZCB0cnkgdG8gdXNlIGFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGNlYTdjOTYzZWI3MmFjMDJhMjBmNTU2ZDM2MGYwNTgyNTFkYWJi
ZTIuLjNhMzhjNmFmNDJkNjExNzExN2QzMGQ5OTE1YTE5OGY4NDg3YjU2ZTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMi0xMi0wNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgorCisgICAgICAgIFByb3ZpZGUgdGhlIGJhY2tlbmQgZm9yIGV4cG9zaW5nIHRoZSBsYXllciB0
cmVlIHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM1MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRpbmcgYSBMYXlvdXRUZXN0IHRoYXQgZXhlcmNpc2VzIHRoZSB2
YXJpb3VzIEFQSXMgYW5kIGV2ZW50IGV4cG9zZWQgYnkgdGhlIExheWVyVHJlZUFnZW50LgorICAg
ICAgICBUaGlzIHRlc3QgaXMgc2tpcHBlZCBvbiBFRkwgd2hlcmUgQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcgaXMgbm90IGF2YWlsYWJsZS4KKworICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9s
YXllci10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3Rv
Y29sL2xheWVyLXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMTItMTItMDQgIEp1c3NpIEt1a2tvbmVuICA8anVzc2kua3Vra29u
ZW5AaW50ZWwuY29tPgogCiAgICAgICAgIE1ha2Ugc3ZnL2RvbS92aWV3c3BlYy1wYXJzZXItKi5o
dG1sIG5vbi1mbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxYWY2ZDk1YTU4ZjRiZDVlZjFi
MGFkMWRhNzIwNjNkMDIxYzIzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNjMgQEAK
KworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKworPT09IEVuYWJsZSB0aGUgTGF5
ZXJUcmVlIGFnZW50ID09PQorCitQQVNTCisKKz09PSBHZXQgdGhlIGluaXRpYWwgbGF5ZXIgdHJl
ZSA9PT0KKworUEFTUworCit7CisgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAiYm91bmRz
IjogeworICAgICAgICAieCI6IDAsCisgICAgICAgICJ5IjogMCwKKyAgICAgICAgIndpZHRoIjog
ODAwLAorICAgICAgICAiaGVpZ2h0IjogNjAwCisgICAgfSwKKyAgICAiaXNDb21wb3NpdGVkIjog
dHJ1ZSwKKyAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7
CisgICAgICAgICJ4IjogMCwKKyAgICAgICAgInkiOiAwLAorICAgICAgICAid2lkdGgiOiA4MDAs
CisgICAgICAgICJoZWlnaHQiOiA2MDAKKyAgICB9LAorICAgICJjaGlsZExheWVycyI6IFsKKyAg
ICAgICAgeworICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJi
b3VuZHMiOiB7CisgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICJ5Ijog
MCwKKyAgICAgICAgICAgICAgICAid2lkdGgiOiA4MDAsCisgICAgICAgICAgICAgICAgImhlaWdo
dCI6IDYwMAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxz
ZSwKKyAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAg
ICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAx
MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5n
IiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdo
dCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0Nv
bXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIs
CisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
eSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVy
cyI6IFtdCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRC
b3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJz
dHJpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
OiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5
IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3Vu
ZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhl
aWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAg
ICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZh
bHNlLAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6
ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJoZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJz
IjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDIzNywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxNDQKKyAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBv
c2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
OiAyMzcsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTQ0CisgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQorCis9PT0g
TWVzc2FnZSB0aGUgcGFnZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllciA9PT0KKworUEFT
UworCis9PT0gR2V0IHRoZSBtb2RpZmllZCBsYXllciB0cmVlID09PQorCitQQVNTCisKK3sKKyAg
ICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICJib3VuZHMiOiB7CisgICAgICAgICJ4IjogMCwK
KyAgICAgICAgInkiOiAwLAorICAgICAgICAid2lkdGgiOiA3ODUsCisgICAgICAgICJoZWlnaHQi
OiA2MDAKKyAgICB9LAorICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICJtZW1vcnkiOiAi
bnVtYmVyIiwKKyAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgIngiOiAwLAorICAg
ICAgICAieSI6IDAsCisgICAgICAgICJ3aWR0aCI6IDc4NSwKKyAgICAgICAgImhlaWdodCI6IDMw
OTYKKyAgICB9LAorICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAg
ImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAg
ICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAi
d2lkdGgiOiA3ODUsCisgICAgICAgICAgICAgICAgImhlaWdodCI6IDYwMAorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICJjaGls
ZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXll
cklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNo
aWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAg
ICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6
IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAg
ICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
IndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWwor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs
YXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0
IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29t
cG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5n
IiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWln
aHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlz
Q29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVy
IiwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRM
YXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMi
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAg
ICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
IndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAwCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxz
ZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAi
c3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDM3MCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJoZWlnaHQiOiAzMDk2CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
ICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5Ijog
Im51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAg
ICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInki
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMzcwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgImhlaWdodCI6IDMwOTYKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwK
KyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6
IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisg
ICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAi
aGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
ImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAg
ICAgIH0KKyAgICBdCit9CisKKz09PSBPYnRhaW4gdGhlIG5vZGUgaWQgZm9yIHRoZSBuZXdseSBp
bnNlcnRlZCBsYXllciA9PT0KKworUEFTUworCis9PT0gR2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBu
ZXdseSBpbnNlcnRlZCBub2RlID09PQorCitQQVNTCisKKz09PSBUZXN0IGNvbXBsZXRlLCBhbGwg
ZXhwZWN0ZWQgY29uZGl0aW9ucyBtZXQgPT09CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5Mzc0ZTNmZmRmMzdjM2JmOWNh
OTNiMTczOWYxNjNhYTYzZGM5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sCkBAIC0wLDAgKzEsMjUwIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiBhZGRDb21wb3Np
dGVkTGF5ZXIoKQoreworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiY29tcG9zaXRlZCI7CisgICAgZWxlbWVu
dC5pZCA9ICJsYXN0LWVsZW1lbnQiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7Cit9OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgaW5pdGlhbExheWVyVHJl
ZTsKKyAgICB2YXIgZXZlbnRzQ291bnQgPSAwOworCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhh
bmRsZXJbIkxheWVyVHJlZS5sYXllclRyZWVEaWRDaGFuZ2UiXSA9IGZ1bmN0aW9uIChtZXNzYWdl
T2JqZWN0KSB7CisgICAgICAgIGV2ZW50c0NvdW50Kys7CisgICAgfTsKKworICAgIGdldERvY3Vt
ZW50KCk7CisgICAgCisgICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQoKQorICAgIHsKKyAgICAgICAg
Ly8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50IHNvIHRoYXQgbGF0ZXIgb24gd2UgbWF5
IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6
ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0RG9jdW1l
bnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazog
ZW5hYmxlTGF5ZXJUcmVlQWdlbnQKKyAgICAgICAgfSk7CisgICAgfTsKKyAgICAKKyAgICBmdW5j
dGlvbiBlbmFibGVMYXllclRyZWVBZ2VudChyZXN1bHQpCisgICAgeworICAgICAgICBzdGVwKHsK
KyAgICAgICAgICAgIG5hbWU6ICJFbmFibGUgdGhlIExheWVyVHJlZSBhZ2VudCIsCisgICAgICAg
ICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmVuYWJsZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJz
OiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnZXRJbml0aWFsTGF5ZXJUcmVlCisgICAgICAg
IH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRJbml0aWFsTGF5ZXJUcmVlKHJlc3VsdCkK
KyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCB0aGUgaW5pdGlh
bCBsYXllciB0cmVlIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUuZ2V0TGF5ZXJU
cmVlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6
IGdvdEluaXRpYWxMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9u
IGdvdEluaXRpYWxMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgaW5pdGlhbExheWVy
VHJlZSA9IHJlc3VsdC5sYXllclRyZWU7CisKKyAgICAgICAgZHVtcExheWVyVHJlZShpbml0aWFs
TGF5ZXJUcmVlKTsKKworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJNZXNzYWdl
IHRoZSBwYWdlIHRvIGFkZCBhIG5ldyBjb21wb3NpdGVkIGxheWVyIiwKKyAgICAgICAgICAgIGNv
bW1hbmQ6ICJSdW50aW1lLmV2YWx1YXRlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsiZXhw
cmVzc2lvbiI6ICJhZGRDb21wb3NpdGVkTGF5ZXIoKSJ9LAorICAgICAgICAgICAgY2FsbGJhY2s6
IGdldE1vZGlmaWVkTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlv
biBnZXRNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICBzdGVwKHsKKyAg
ICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUiLAorICAgICAgICAg
ICAgY29tbWFuZDogIkxheWVyVHJlZS5nZXRMYXllclRyZWUiLAorICAgICAgICAgICAgcGFyYW1l
dGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ290TW9kaWZpZWRMYXllclRyZWUKKyAg
ICAgICAgfSk7CisgICAgfTsKKworICAgIHZhciBsYXllckNvdW50ID0gMDsKKworICAgIGZ1bmN0
aW9uIGdvdE1vZGlmaWVkTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIGR1bXBMYXll
clRyZWUocmVzdWx0LmxheWVyVHJlZSk7CisKKyAgICAgICAgdmFyIG11dGF0aW9ucyA9IGxheWVy
VHJlZU11dGF0aW9ucyhpbml0aWFsTGF5ZXJUcmVlLCByZXN1bHQubGF5ZXJUcmVlKTsKKyAgICAg
ICAgdmFyIGxhc3RJZCA9IG11dGF0aW9ucy5hZGRpdGlvbnNbMF07CisKKyAgICAgICAgc3RlcCh7
CisgICAgICAgICAgICBuYW1lOiAiT2J0YWluIHRoZSBub2RlIGlkIGZvciB0aGUgbmV3bHkgaW5z
ZXJ0ZWQgbGF5ZXIiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5ub2RlSWRGb3JM
YXllcklkIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibGF5ZXJJZCI6IGxhc3RJZH0sCisg
ICAgICAgICAgICBjYWxsYmFjazogZ290Tm9kZUlkRm9yTGFzdExheWVyCisgICAgICAgIH0pOwor
ICAgIH07CisKKyAgICBmdW5jdGlvbiBnb3ROb2RlSWRGb3JMYXN0TGF5ZXIocmVzdWx0KQorICAg
IHsKKyAgICAgICAgdmFyIGlkID0gcmVzdWx0Lm5vZGVJZDsKKyAgICAgICAgc3RlcCh7CisgICAg
ICAgICAgICBuYW1lOiAiR2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBuZXdseSBpbnNlcnRlZCBub2Rl
IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0QXR0cmlidXRlcyIsCisgICAgICAgICAg
ICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGlkfSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnb3RO
b2RlQXR0cmlidXRlcworICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ290Tm9k
ZUF0dHJpYnV0ZXMocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBhdHRy
aWJ1dGVzRGljdGlvbmFyeUZyb21BcnJheShyZXN1bHQuYXR0cmlidXRlcyk7CisgICAgICAgIGlm
IChhdHRyaWJ1dGVzLmlkICE9PSAibGFzdC1lbGVtZW50IikKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJGQUlMOiBEaWQgbm90IG9idGFpbiB0aGUgZXhwZWN0ZWQgZWxlbWVudCBmb3Ig
dGhlIGxhc3QgaW5zZXJ0ZWQgbGF5ZXIuIik7CisKKyAgICAgICAgZmluaXNoVGVzdCgpOworICAg
IH07CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICghZXZl
bnRzQ291bnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJTDogRGlkIG5vdCBy
ZWNlaXZlIGxheWVyVHJlZURpZENoYW5nZSBldmVudHMuIik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSBUZXN0IGNvbXBsZXRlLCBhbGwgZXhwZWN0
ZWQgY29uZGl0aW9ucyBtZXQgPT09Iik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gbGF5ZXJUcmVlTXV0YXRpb25zKG9sZExh
eWVyVHJlZSwgbmV3TGF5ZXJUcmVlKQorICAgIHsKKyAgICAgICAgdmFyIG9sZEtleXMgPSBPYmpl
Y3Qua2V5cyhmbGF0dGVuZWRMYXllclRyZWUob2xkTGF5ZXJUcmVlKSk7CisgICAgICAgIHZhciBu
ZXdLZXlzID0gT2JqZWN0LmtleXMoZmxhdHRlbmVkTGF5ZXJUcmVlKG5ld0xheWVyVHJlZSkpOwor
CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBhZGRpdGlvbnM6IG5ld0tleXMuZmlsdGVy
KGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKG9sZEtleXMuaW5kZXhP
ZihrZXkpID09PSAtMSk7CisgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgIHJlbW92YWxzOiBv
bGRLZXlzLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChu
ZXdLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpOworICAgICAgICAgICAgfSkKKyAgICAgICAgfTsK
KyAgICB9OworCisgICAgZnVuY3Rpb24gZmxhdHRlbmVkTGF5ZXJUcmVlKGxheWVyVHJlZSkKKyAg
ICB7CisgICAgICAgIHZhciBsYXllckJ5SWRzID0ge307CisKKyAgICAgICAgZnVuY3Rpb24gcmVj
dXJzZShsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgbGF5ZXJCeUlkc1tsYXllci5sYXll
cklkXSA9IGxheWVyOworICAgICAgICAgICAgaWYgKGxheWVyLmNoaWxkTGF5ZXJzKQorICAgICAg
ICAgICAgICAgIGxheWVyLmNoaWxkTGF5ZXJzLmZvckVhY2gocmVjdXJzZSk7CisgICAgICAgIH07
CisgICAgICAgIAorICAgICAgICByZWN1cnNlKGxheWVyVHJlZSk7CisKKyAgICAgICAgcmV0dXJu
IGxheWVyQnlJZHM7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5
RnJvbUFycmF5KGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICB2YXIgZGljdGlvbmFyeSA9IHt9
CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwg
Y291bnQ7IGkgKz0gMikgeworICAgICAgICAgICAgZGljdGlvbmFyeVthdHRyaWJ1dGVzW2ldXSA9
IGF0dHJpYnV0ZXNbaSArIDFdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5
OworICAgIH07CisKKyAgICBmdW5jdGlvbiBkdW1wTGF5ZXJUcmVlKGxheWVyVHJlZSkKKyAgICB7
CisgICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChrZXkgPT09ICJsYXllcklkIiB8fCBrZXkgPT09ICJtZW1vcnkiKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0eXBlb2YodmFsdWUpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiXG4iICsgSlNPTi5zdHJpbmdpZnkobGF5ZXJUcmVlLCByZXBsYWNlciwgIiAgICAi
KSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7CisgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgdGVzdC5uYW1lICsgIiA9PT1cbiIpCisgICAgICAg
IEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQodGVzdC5jb21tYW5kLCB0ZXN0LnBhcmFtZXRlcnMs
IGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChtZXNzYWdlT2JqZWN0
Lmhhc093blByb3BlcnR5KCJlcnJvciIpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkZBSUw6ICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLm1lc3NhZ2UgKyAiICgiICsgbWVz
c2FnZU9iamVjdC5lcnJvci5jb2RlICsgIikiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1MiKTsKKyAgICAgICAgICAg
IHRlc3QuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5yZXN1bHQpOworICAgICAgICB9KTsKKyAgICB9
OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1
bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIAorICAgIGRpdiB7CisgICAgICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICAgICAgdG9wOiAwOworICAgICAgICBsZWZ0OiAwOworICAgIH0KKyAg
ICAgIAorICAgIC5yZWd1bGFyIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICB9CisKKyAg
ICAuY29tcG9zaXRlZCB7CisgICAgICAgIHRvcDogMjVweDsKKyAgICAgICAgbGVmdDogMjVweDsK
KyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0
ZVooMCk7CisgICAgfQorICAgICAgCisgICAgLm9mZnNldCB7CisgICAgICAgIGxlZnQ6IDIwMHB4
OworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICB9CisKKyAg
ICBidXR0b24geworICAgICAgICBtYXJnaW4tbGVmdDogMjBweDsKKyAgICAgICAgbWFyZ2luLXRv
cDogMTIwcHg7CisgICAgfQorICAgICAgCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKyAg
ICA8ZGl2IGNsYXNzPSJyZWd1bGFyIj48L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0
ZWQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj48L2Rpdj4KKyAgICA8L2Rpdj4K
KworICAgIDxkaXYgY2xhc3M9InJlZ3VsYXIgb2Zmc2V0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0i
Y29tcG9zaXRlZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTAyM2M4YTViYTM0MzVi
OTNiYTQ0N2YzYjgyYTk3NjU0MjMyY2FhYS4uODgxN2IzZjk5YTlmODZhYWQyY2IzZGI3N2E0OWZl
MDllNzUwMWVlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTE2ODAsNiArMTY4MCw5IEBAIHdlYmtpdC5vcmcvYi8xMDA4NTUgaWV0ZXN0Y2VudGVyL2Nz
czMvdGV4dC90ZXh0c2hhZG93LTAwOC5odG0gWyBJbWFnZU9ubHlGYWlsdXJlCiB3ZWJraXQub3Jn
L2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29y
a2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyLXRlcm1pbmF0ZS1kZWRpY2F0ZWQtd29ya2VyLXdoaWxlLXBhdXNlZC5odG1sIFsg
U2tpcCBdCiAKKyMgQUNDRUxFUkFURURfQ09NUE9TSVRJTkcgaXMgcmVxdWlyZSBmb3IgTGF5ZXIg
dHJlZSBpbnNwZWN0aW9uIHRlc3QgdG8gcGFzcworQnVnKEVGTCkgd2Via2l0Lm9yZy9iLzEwMzUx
MyBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sIFsgU2tpcCBdCisKICMgTmV3IG1l
ZGlhIHRlc3QgaW50cm9kdWNlZCBpbiByMTMzNjYwIGZhaWxzLgogd2Via2l0Lm9yZy9iLzEwMTQz
OSBtZWRpYS9wcm9ncmVzcy1ldmVudHMtZ2VuZXJhdGVkLWNvcnJlY3RseS5odG1sIFsgRmFpbHVy
ZSBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177824</attachid>
            <date>2012-12-05 13:52:57 -0800</date>
            <delta_ts>2012-12-07 07:42:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121205225018.patch</filename>
            <type>text/plain</type>
            <size>61185</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjYjc1NTQxYzlhYjU4
NTA0NWM5N2I5Mzc5YjExMTQ0ZDJmZGFjMS4uMTcxNGIwYjFmMjRlNGNlNTQzODg3YjY5YjZlY2Vl
OWY0ZTE2OTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTEyLTA1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2UKKyAgICAgICAgd2l0aCBXZWJDb3JlIHRvIGFjY2VzcyBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlCisgICAgICAgIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFj
a2VkIGJ5IHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
CisgICAgICAgIGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVB
Z2VudCB3aGljaCB3aWxsIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIAorICAgICAgICBjaGFuZ2Vz
IHRvIHRoZSByZW5kZXIgbGF5ZXIgdHJlZSB2aWEgYSBuZXcgbGF5ZXJUcmVlRGlkQ2hhbmdlIGV2
ZW50LCBwcm92aWRpbmcgYW4gb2JqZWN0CisgICAgICAgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBo
aWVyYXJjaHkgb2YgUmVuZGVyTGF5ZXJzIGZvciB0aGUgaW5zcGVjdGVkIGRvY3VtZW50LiBUaGlz
IGhpZXJhcmNoeSAKKyAgICAgICAgY2FuIGJlIHF1ZXJpZWQgYXQgYW55IHRpbWUgdXNpbmcgdGhl
IC5nZXRMYXllclRyZWUoKSBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50LiBGaW5hbGx5LCAK
KyAgICAgICAgdGhlIExheWVyVHJlZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXll
cklkKCkgbWV0aG9kIGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIAorICAgICAgICBub2Rl
IGFzc29jaWF0ZWQgd2l0aCB0aGUgUmVuZGVyTGF5ZXIgd2l0aCB0aGUgcHJvdmlkZWQgbGF5ZXIg
aWQuCisgICAgICAgIAorICAgICAgICBJbiB0ZXJtcyBvZiBpbXBsZW1lbnRhdGlvbiwgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yIGhhcyBiZWVuIGNoYW5nZWQgc3VjaCB0aGF0IGluIGl0cyAKKyAgICAg
ICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoKSBtZXRob2Qgd2UgY2FsbCB0aGUgbGF5ZXJUcmVl
RGlkQ2hhbmdlIG1ldGhvZCBvbiB0aGUgCisgICAgICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50
IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLgorCisgICAgICAgIFRl
c3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwKKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjogRGVmaW5lIG5ldyB0
eXBlcyBJbnRSZWN0ICh4LCB5LCB3aWR0aCwgaGVpZ2h0KSBhbmQgTGF5ZXIsIHdoaWNoIAorICAg
ICAgICBob2xkcyB0aGUgaW5mb3JtYXRpb24gZm9yIGEgUmVuZGVyTGF5ZXIgKGxheWVySWQsIGJv
dW5kcywgaXNDb21wb3NpdGVkLCBtZW1vcnksIAorICAgICAgICBjb21wb3NpdGVkQm91bmRzKSBh
bmQgaXRzIGNoaWxkcmVuIChjaGlsZExheWVycykuIFdlIGFsc28gZGVmaW5lIHRoZSBtZXRob2Rz
IG9mIHRoZSAKKyAgICAgICAgTGF5ZXJUcmVlQWdlbnQgb2JqZWN0IChlbmFibGUsIGRpc2FibGUs
IGdldExheWVyVHJlZSwgbm9kZUlkRm9yTGF5ZXJJZCkgYW5kIHRoZSAKKyAgICAgICAgbGF5ZXJU
cmVlRGlkQ2hhbmdlIGV2ZW50IGl0ICAKKyAgICAgICAgZmlyZXMuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0
aEZvclJlbmRlckxheWVyVG9Gcm9udGVuZCk6IE5ldyBtZXRob2QgZmFjaWxpdGF0aW5nIAorICAg
ICAgICBwdXNoaW5nIHRoZSBub2RlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIFJlbmRlckxheWVy
IHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDb21taXRMb2FkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclRyZWVBZ2VudFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fklu
c3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpzZXRGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
bGF5ZXJUcmVlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpyZW5kZXJMYXllckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Z2V0TGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvclJvb3RMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6IEJ1
aWxkIHRoZSBlbnRpcmUgaGllcmFyY2h5IG9mIAorICAgICAgICBSZW5kZXJMYXllcnMgZnJvbSB0
aGUgcHJvdmlkZWQgUmVuZGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp1bmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6Om5vZGVJZEZvckxheWVySWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1
bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgIChJbnN0cnVtZW50
aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6Omluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6OnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpOiBDYWxsIHRoZSBsYXllclRyZWVEaWRD
aGFuZ2UgbWV0aG9kIAorICAgICAgICBvbiB0aGUgTGF5ZXJUcmVlQWdlbnQgdmlhIHRoZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24gdG8gaW5mb3JtIHRoZSBmcm9udC1lbmQgdGhhdCB0aGUgCisg
ICAgICAgIFJlbmRlckxheWVyIGhpZXJhcmNoeSBoYXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckJlY2Ft
ZU5vbkNvbXBvc2l0ZWQpOiBDYWxsIHRoZSByZW5kZXJMYXllckRlc3Ryb3llZCAKKyAgICAgICAg
bWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudCB2aWEgdGhlIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbiB0byB1bmJpbmQgdGhlIGxheWVyIHRoYXQgaXMgCisgICAgICAgIGJlaW5nIGRlc3Ryb3ll
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAg
IChSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorCiAyMDEyLTEyLTA0ICBNaWNoYWVsIFBydWV0dCAg
PG1pY2hhZWxANjhrLm9yZz4KIAogICAgICAgICBbSlNDXSBHZW5lcmF0ZSB2aXNpdENoaWxkcmVu
KCkgZm9yIHVuY3VzdG9taXplZCBFdmVudFRhcmdldCBpbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDk1MGEzNjA5YTdmYTBhOTBjNTUzOTU0ZDMzNmNkMjI3ODcxMGMwZTUuLmVjMjI0
YTI3ZDRlNzI3MWEzYjg1NWMwODRiNzM3MmFhNGI5NjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xNTk5LDYgKzE1OTksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckhpc3RvcnkuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDVhZjdlZjU2MWMwN2ZkYjkyOGU4NDQ1M2IyYmU4ZmM3ZTQ3YzYw
NjAuLmI2ZDRiMWEyMWExMDY1NGZiZGUzOTk4NzA2ZDBjOGEzODZiZTRhNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzc0Miw2ICszNzQyLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCAyOTkwMjFjOWUyZmMzNmVjMmFiYzhjNmRlNWQ0NWE4ZDIwOGE0NGRhLi44NjYzMDAyMTY0
MTgzZWZiZDBlNmQ2NmJhNmY1ZjZlOTNlOTk5OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTc3Myw2ICs3
NzMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCkBAIC0xOTIxLDYgKzE5MjIsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JIaXN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3
MGYuLmIyMGU1Y2JmMmY1ZWQ5OTdhZDRlYzQzYzkzOWYwZWM2ZWVkNjM2YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI4ODIsNiArMjg4Miw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZTk5NDgwYzlkNDAxODI3Y2Ni
NDJkOWEyN2E4ZDZlNzRlOGU0NzEzOC4uMzMyMTk1MWNhMzJiODRhYzQ1MzMxY2QwZjE1NjRlYzVm
MmVmMWM2NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTc1NDcwLDYgKzc1NDcwLDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MGZlMzc4MzRmNzllNmNm
MWNjZDFhNTRjNWRlZGQyNGU5NDlhOGZiLi5kYTNiNTUzYjM2ZmRmMzcyMjM5ZmFmNDM5M2RlYzk4
MmZiZmMwNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xOTEwLDYgKzE5MTAsOCBAQAogCQk3MTkwNERFQTE1NkE2MzNBMDAx
RTFCQTUgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE4NTEyMzMxNTY4NjQ5ODAw
QzQwOTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLzsgfTsKIAkJNzFBNTdERjExNTRC
RTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNW
R1BhdGhVdGlsaXRpZXMuY3BwICovOyB9OwogCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyog
U1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAq
LzsgfTsKKwkJNzFCMUUxMjUxNjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIx
RTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLzsgfTsK
KwkJNzFCMUUxMjYxNjQwNDkxQTAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjFFMTIz
MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi87IH07CiAJ
CTcxQ0M3QTIwMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQ0M3QTFGMTUy
QTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLzsgfTsKIAkJNzFE
Q0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MURDQjZGRjE1NjgxOTc2MDA4NjIy
NzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDIxNTY4MTk3NjAwODYy
MjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBh
bi5oICovOyB9OwpAQCAtOTE5Myw2ICs5MTk1LDggQEAKIAkJNzE4NTEyMzMxNTY4NjQ5ODAwQzQw
OTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHVmll
d1NwZWNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEg
LyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJB
MEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRENCNkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NW
R1pvb21BbmRQYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
Vkdab29tQW5kUGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I3MDAx
NTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NWR1pvb21BbmRQYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0ODI3LDYgKzE0ODMxLDggQEAKIAkJCQlBQTczMTgzQzE1OTI1NUI5MDBBOTNFNkUg
LyogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwICovLAogCQkJCUFBNzMxODNEMTU5MjU1
QjkwMEE5M0U2RSAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oICovLAogCQkJCUFBOTAz
MEZFMTU3RTE2QTAwMDI3NjI0NyAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cyAqLywKKwkJCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwICovLAorCQkJCTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oICovLAogCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJ
bmplY3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyog
SW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLywKQEAgLTIzMzQ0LDYgKzIzMzUwLDcgQEAKIAkJCQk4
NTAyQUI1NDBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jR0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDJBQjk4MEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxl
bWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAyQUI1NjBBRDQzOEMwMDAzNzg1
NDAgLyogRE9NU1ZHRkVGdW5jUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjFFMTI1
MTY0MDQ4RjcwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODUwMkFCOTkwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY1JFbGVtZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjU4MEFENDM4QzAwMDM3ODU0MCAv
KiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJB
QjlBMEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjIwNSw2ICsyNjIxMiw3IEBACiAJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQk3MUIxRTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFD
IC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjlDMTZFMTMwMEMyRTIwMDJENzk0RSAvKiBBY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNDU0
NTM5ZjY2YTlmYmQ1ZTJlM2UwYWI3Y2Y0NDJjNmY4NzQ2OTIxOC4uYWQyNTA1NTM5MTZhNDBmNjA4
ZjVjM2VlNWQwMWM4MGI3MjNmOWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtMzI0Miw1ICszMjQyLDcyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIF0s
CiAgICAgICAgICJldmVudHMiOiBbXQorICAgIH0sCisgICAgeworICAgICAgICAiZG9tYWluIjog
IkxheWVyVHJlZSIsCisgICAgICAgICJoaWRkZW4iOiB0cnVlLAorICAgICAgICAidHlwZXMiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkxheWVySWQiLAorICAgICAg
ICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlVuaXF1ZSBSZW5kZXJMYXllciBpZGVudGlmaWVyLiIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkludFJlY3QiLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEg
cmVjdGFuZ2xlLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIHggcG9zaXRpb24uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInki
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSB5IHBvc2l0aW9uLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIHdpZHRoIG1ldHJpYy4iIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgaGVpZ2h0IG1ldHJpYy4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJMYXllciIsCisgICAgICAg
ICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiSW5mb3JtYXRpb24gYWJvdXQgYSBjb21wb3NpdGluZyBsYXllci4iLAorICAgICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVy
SWQiLCAiJHJlZiI6ICJMYXllcklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSB1bmlxdWUgaWQgZm9y
IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdW5kcyIs
ICIkcmVmIjogIkludFJlY3QiLCAiZGVzY3JpcHRpb24iOiAiQm91bmRzIG9mIHRoZSBsYXllci4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNDb21wb3NpdGVkIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVy
IGlzIGNvbXBvc2l0ZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9y
eSIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
RXN0aW1hdGVkIG1lbW9yeSB1c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImNvbXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2YgdGhlIGNvbXBvc2l0
ZWQgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNoaWxkTGF5ZXJz
IiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjog
IkxheWVyIiB9LCAiZGVzY3JpcHRpb24iOiAiQ2hpbGQgbGF5ZXJzLiIgfQorICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImNvbW1hbmRzIjogWwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0
aW9uLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVz
IGNvbXBvc2l0aW5nIHRyZWUgaW5zcGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldExheWVyVHJlZSIsCisgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIG9m
IHRoZSBjdXJyZW50IHBhZ2UuIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllclRyZWUiLCAiJHJlZiI6ICJMYXllciIsICJk
ZXNjcmlwdGlvbiI6ICJMYXllciB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIg
fQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAibm9kZUlkRm9yTGF5ZXJJZCIsCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5vZGUgaWQgZm9yIGEgZ2l2ZW4gbGF5ZXIgaWQu
IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJsYXllcklkIiwgIiRyZWYiOiAiTGF5ZXJJZCIgfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgbm9kZSBpZCBmb3IgdGhlIGdpdmVuIGxheWVyIGlkLiIgfQorICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiCisgICAg
ICAgICAgICB9CisgICAgICAgIF0KICAgICB9XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggZDE5YWQyZTBhMDIzYjk5YTg2NDQ1Njdh
MzE0Zjc0YTFkZmY3MDcxZi4uMDMwMWIxY2NhZGE1MjUzZjBlOWFiZTVlOGIxODY5NjFmODBhOTBm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3Bw
CkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5jcHAiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
IgogI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0
b3JPdmVybGF5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIy
NGNhMTcwYjk2NDcwY2E5ZTc2MzdkOWQwNDk3ZmExZmUxMDhhOTQuLjc5YWQ4NmRiYjkyZTMyYzQ0
M2M5N2RlYWQwNTBiYzcyZjUwNWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKQEAgLTE1MSw2ICsxNTIsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSkpOwogCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdl
dCgpLCBwYWdlKSk7CisKICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9y
Q2xpZW50KTsKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0
KCktPmluaXQobV9pbnNwZWN0b3JBZ2VudAogICAgICAgICAsIGNvbnNvbGVBZ2VudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOWI4ODkw
YWM2NjAyMWE5NDI5ZGI3NTk0NzdhZGIxY2E0MDMxZmRiNS4uZmUwMWU3M2Y0NWE2MDU0ZTQ3ZTA4
YjMwM2MyMGM0YWU5MWVlYTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01NjMsNiArNTYzLDExIEBAIGludCBJbnNwZWN0b3JET01B
Z2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgIHJldHVy
biBtYXAtPmdldChub2RlVG9QdXNoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNo
Tm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRl
ckxheWVyKQoreworICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHJlbmRlckxheWVy
LT5yZW5kZXJlcigpLT5ub2RlKCkpOworfQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5k
Tm9kZUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5n
ZXQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CmluZGV4IGY3Y2M1ZmIxOGFkMThmMTg5ZDk5NTI2OTNhYTU0ZTBkYjZiYWFlNjIuLjNjZmNlN2I2
M2U4YjFjZDEyYzIyNTI1N2Y2YjliM2E4MzRiMzg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xOTksNiArMjAwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAg
ICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsg
fQorICAgIGludCBwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVu
ZGVyTGF5ZXIqKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDBhY2Yz
MDM4YjZiZGQ1NDkzNmUwMGUyZDE0NjA4ZTgwMzliNjI4MzQuLmEzYTRjMTg5NWFiYmJmZjk5MzI0
YWU3OWMxMjI5OTI4YTVkMGQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oIgpAQCAtOTAwLDcgKzkwMSwxMCBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudAogICAgICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5jbGVhclJlc291cmNlcygpOwog
ICAgICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1
bWVudChtYWluRnJhbWUtPmRvY3VtZW50KCkpOwotCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAg
ICAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZXNldCgpOworI2VuZGlmCiAgICAgICAgIGluc3Bl
Y3RvckFnZW50LT5kaWRDb21taXRMb2FkKCk7CiAgICAgfQogICAgIGlmIChJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2Vu
dCgpKQpAQCAtMTI4OCw2ICsxMjkyLDIwIEBAIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJCiAgICAg
cmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5n
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPmxheWVyVHJlZURpZENoYW5nZSgpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPnJlbmRlckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBiYTQ0N2Y4ZDA2MzU1ZmRjZmRkOTI0NTg3OWQzYjhlN2VmOThkN2QyLi42ZjY3ZGRiOGY2
ZmFhY2EyYTRlOWQ3NjM5MGY4MDdjYjE1ZjU1NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBA
IGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CitjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJl
bmRlck9iamVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CkBAIC0yNzgsNiArMjc5LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmll
bnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVu
dGF0aW9uRGF0YSopOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0
YXRpYyB2b2lkIGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVu
ZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwog
cHJpdmF0ZToKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9N
V3JhcHBlcldvcmxkKik7CkBAIC00NTUsNiArNDYxLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRp
b25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKwor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRy
ZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlbmRl
ckxheWVyKik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CiAj
ZW5kaWYKIH07CkBAIC0xNTIwLDYgKzE1MzIsMjAgQEAgaW5saW5lIERldmljZU9yaWVudGF0aW9u
RGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW8K
ICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVy
VHJlZURpZENoYW5nZShQYWdlKiBwYWdlKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkp
CisgICAgICAgIGxheWVyVHJlZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0
cm95ZWQoUGFnZSogcGFnZSwgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVkSW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzLCByZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bGxlY3RpbmdIVE1MUGFyc2VFcnJvcnMoUGFnZSogcGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjYjVlOTI0MGExYWE2Y2MzMzUyYTNhNmQ4YzQyYjY5Nzg0MDRlNzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgor
I2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5ZXJUcmVlQWdlbnRTdGF0
ZSB7CitzdGF0aWMgY29uc3QgY2hhciBsYXllclRyZWVBZ2VudEVuYWJsZWRbXSA9ICJsYXllclRy
ZWVBZ2VudEVuYWJsZWQiOworfTsKKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAgICA6IEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGluc3RydW1lbnRpbmdB
Z2VudHMsIHN0YXRlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250
ZW5kKDApCit7Cit9CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoKQoreworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBt
X2Zyb250ZW5kID0gZnJvbnRlbmQtPmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAg
ICBkaXNhYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3Jl
KCkKK3sKKyAgICBlbmFibGUoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OnJlc2V0KCkKK3sKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7CisgICAgbV9p
ZFRvTGF5ZXIuY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFn
ZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYg
KCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50
RW5hYmxlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVy
VHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgZmFsc2UpOworICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCit7CisgICAg
bV9mcm9udGVuZC0+bGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKiByZW5k
ZXJMYXllcikKK3sKKyAgICB1bmJpbmQocmVuZGVyTGF5ZXIpOworfQorCit2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+JiBvYmplY3QpCit7CisgICAgb2JqZWN0ID0gYnVpbGRP
YmplY3RGb3JSb290TGF5ZXIoKTsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExh
eWVyKCkKK3sKKyAgICByZXR1cm4gYnVpbGRPYmplY3RGb3JMYXllcihtX2luc3BlY3RlZFBhZ2Ut
Pm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5yb290UmVuZGVy
TGF5ZXIoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVy
KiByZW5kZXJMYXllcikKK3sKKyAgICBib29sIGlzQ29tcG9zaXRlZCA9IHJlbmRlckxheWVyLT5p
c0NvbXBvc2l0ZWQoKTsKKworICAgIC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgorICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldExheWVySWQoYmlu
ZChyZW5kZXJMYXllcikpCisgICAgICAgIC5zZXRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0
KGVuY2xvc2luZ0ludFJlY3QocmVuZGVyTGF5ZXItPmxvY2FsQm91bmRpbmdCb3goKSkpKQorICAg
ICAgICAuc2V0SXNDb21wb3NpdGVkKGlzQ29tcG9zaXRlZCk7CisKKyAgICAvLyBPcHRpb25hbCBw
cm9wZXJ0aWVzIGZvciBjb21wb3NpdGVkIGxheWVycyBvbmx5LgorICAgIGlmIChpc0NvbXBvc2l0
ZWQpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXIt
PmJhY2tpbmcoKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldE1lbW9yeShiYWNraW5nLT5iYWNr
aW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldENvbXBv
c2l0ZWRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGJhY2tpbmctPmNvbXBvc2l0ZWRCb3Vu
ZHMoKSkpOworICAgIH0KKworICAgIC8vIFByb2Nlc3MgY2hpbGRyZW4gbGF5ZXJzLgorICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+ID4g
Y2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj46OmNyZWF0ZSgpOworCisgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJ
Zk5lZWRlZCgpOworCisgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHJlZmxlY3Rpb24gbGF5ZXIu
CisgICAgaWYgKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkKKyAgICAgICAgY2hpbGRy
ZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHJlbmRlckxheWVyLT5yZWZsZWN0
aW9uTGF5ZXIoKSkpOworCisgICAgaWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgp
KSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJl
bmRlckxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6
ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobmVnWk9yZGVyTGlzdC0+YXQoaSkpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3Qg
PSByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAgICBzaXplX3QgbGlzdFNp
emUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1
aWxkT2JqZWN0Rm9yTGF5ZXIobm9ybWFsRmxvd0xpc3QtPmF0KGkpKSk7CisgICAgfQorICAgIAor
ICAgIGlmIChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+cG9zWk9y
ZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0
LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyAr
K2kpCisgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZv
ckxheWVyKHBvc1pPcmRlckxpc3QtPmF0KGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
YXllck9iamVjdC0+c2V0Q2hpbGRMYXllcnMoY2hpbGRyZW5BcnJheSk7CisgICAgCisgICAgcmV0
dXJuIGxheWVyT2JqZWN0OworfQorCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFgocmVjdC54KCkpCisgICAgICAgIC5z
ZXRZKHJlY3QueSgpKQorICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0aCgpKQorICAgICAgICAu
c2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpLnJlbGVhc2UoKTsKK30KKworU3RyaW5nIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBp
ZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBt
X2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXllcik7CisgICAgaWYgKGlkZW50aWZpZXIuaXNO
dWxsKCkpIHsKKyAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpOworICAgICAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnNldChsYXllciwg
aWRlbnRpZmllcik7CisgICAgICAgIG1faWRUb0xheWVyLnNldChpZGVudGlmaWVyLCBsYXllcik7
CisgICAgfQorICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50Ojp1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIFN0cmlu
ZyBpZGVudGlmaWVyID0gbV9kb2N1bWVudExheWVyVG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlm
IChpZGVudGlmaWVyLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50
TGF5ZXJUb0lkTWFwLnJlbW92ZShsYXllcik7CisgICAgbV9pZFRvTGF5ZXIucmVtb3ZlKGlkZW50
aWZpZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2RlSWRGb3JMYXll
cklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBpbnQq
IHJlc3VsdE5vZGVJZCkKK3sKKyAgICAvLyBPYnRhaW4gdGhlIFJlbmRlckxheWVyIGZyb20gdGhl
IGlkZW50aWZpZXIgcHJvdmlkZWQuCisgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVy
ID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOworICAgIAorICAgIC8vIFNlbmQgYW4gZXJyb3Ig
aWYgdGhlcmUgaXMgbm8gc3VjaCByZWdpc3RlcmVkIGxheWVyIGlkLgorICAgIGlmICghcmVuZGVy
TGF5ZXIpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIGEgYm91bmQg
bGF5ZXIgZm9yIHRoZSBwcm92aWRlZCBpZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgLy8gR2V0IHRoZSBub2RlIGlkIGZyb20gdGhlIERPTSBhZ2VudCBhbmQgcmV0dXJuIGl0
IHRvIHRoZSBmcm9udC1lbmQuCisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGluc3BlY3RvckRPTUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpOworICAgICpy
ZXN1bHROb2RlSWQgPSBpbnNwZWN0b3JET01BZ2VudC0+cHVzaE5vZGVQYXRoRm9yUmVuZGVyTGF5
ZXJUb0Zyb250ZW5kKHJlbmRlckxheWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MTFiODY1MjA4ZmFjNDA1NmY3NWNhYjdjY2Uy
MTkzZmQyZTJiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaAor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OworY2xhc3MgUGFnZTsKKwordHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIElu
c3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JMYXllclRyZWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TGF5
ZXJUcmVlQ29tbWFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvckxheWVyVHJlZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChpbnN0
cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgcGFnZSkpOworICAgIH0KKyAgICB+SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVh
bCB2b2lkIHJlc3RvcmUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZSgpOworICAgIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVy
TGF5ZXIqKTsKKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCisgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGdldExheWVyVHJlZShFcnJvclN0cmluZyos
IFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbm9kZUlkRm9yTGF5ZXJJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwg
aW50KiByZXN1bHROb2RlSWQpOworCitwcml2YXRlOgorICAgIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqKTsKKworICAg
IC8vIFJlbmRlckxheWVyLXJlbGF0ZWQgbWV0aG9kcy4KKyAgICBTdHJpbmcgYmluZChjb25zdCBS
ZW5kZXJMYXllciopOworICAgIHZvaWQgdW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CisKKyAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZv
clJvb3RMYXllcigpOyAgIAorICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAg
ICBJbnNwZWN0b3JGcm9udGVuZDo6TGF5ZXJUcmVlKiBtX2Zyb250ZW5kOworCisgICAgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKKyAg
ICBIYXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjEx
NmY5NDMxM2MyYjI4N2JlYjc4ZWU5ZDcyZTE3YjQ1Zi4uN2UyNzA5ZjcyZWM4YzdmZWIzMzE3MGIz
ZWUwMjM4NWExZWM2YTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OworY2xhc3MgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKQEAg
LTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAg
ICAgICAgLCBtX2luc3BlY3RvclBhZ2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NT
QWdlbnQoMCkKKyAgICAgICAgLCBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAg
ICwgbV9pbnNwZWN0b3JDb25zb2xlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFn
ZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAg
KzE1NSwxOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNh
bnZhc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAg
IHZvaWQgc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yQ2FudmFzQWdlbnQgPSBhZ2VudDsgfQogCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBpbnNwZWN0b3JM
YXllclRyZWVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7
IH0KKyAgICB2b2lkIHNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3BlY3RvckxheWVyVHJl
ZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owog
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9pbnNwZWN0b3JQYWdlQWdlbnQ7CiAgICAgSW5zcGVj
dG9yQ1NTQWdlbnQqIG1faW5zcGVjdG9yQ1NTQWdlbnQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVy
VHJlZUFnZW50OworI2VuZGlmCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3Rv
ckNvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2Vu
dDsKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3NzAuLmEwYWM1
YTE0YzUxNGE1MzUxMjU1NTdmODEyZTZhMjA2ZWVjZmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCkBAIC01MDgsNiArNTA5LDE4IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0
ZVR5cGUgdXBkYXRlCiAKICAgICBpZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAg
ICAgICAgZW5hYmxlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUg
aW5zcGVjdG9yIHRoYXQgdGhlIGxheWVyIHRyZWUgaGFzIGNoYW5nZWQuCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UocGFnZSgpKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIpCit7CisgICAgLy8gSW5mb3JtIHRoZSBpbnNwZWN0b3IgdGhh
dCB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgd2FzIGRlc3Ryb3llZC4KKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKHBhZ2UoKSwgcmVuZGVyTGF5ZXIpOwor
CisgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKKyAgICAtLW1fY29tcG9z
aXRlZExheWVyQ291bnQ7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNTE5MzQxMWEyZDcx
MGU3OWUyMzhmNTEwYmY3NGFlMGU2YTFmZGNhMS4uZTg5ZWM3OWQyYTE0MjM5YzFlOGRhZjdkYzQy
MjY0NWRlYzg2NzkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaApAQCAtMTcwLDExICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckJhY2tpbmdGb3JBbGxMYXllcnMoKTsKICAgICAKICAgICB2b2lkIGxheWVyQmVjYW1lQ29t
cG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIHsgKyttX2NvbXBvc2l0ZWRMYXllckNvdW50OyB9
Ci0gICAgdm9pZCBsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKLSAgICAg
ICAgLS1tX2NvbXBvc2l0ZWRMYXllckNvdW50OwotICAgIH0KKyAgICB2b2lkIGxheWVyQmVjYW1l
Tm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIAogI2lmIEVOQUJMRShWSURF
TykKICAgICAvLyBVc2UgYnkgUmVuZGVyVmlkZW8gdG8gYXNrIGlmIGl0IHNob3VsZCB0cnkgdG8g
dXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlYTdjOTYzZWI3MmFjMDJhMjBm
NTU2ZDM2MGYwNTgyNTFkYWJiZTIuLjNhMzhjNmFmNDJkNjExNzExN2QzMGQ5OTE1YTE5OGY4NDg3
YjU2ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wNSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgdGhlIGJhY2tlbmQgZm9yIGV4
cG9zaW5nIHRoZSBsYXllciB0cmVlIHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBMYXlvdXRUZXN0IHRo
YXQgZXhlcmNpc2VzIHRoZSB2YXJpb3VzIEFQSXMgYW5kIGV2ZW50IGV4cG9zZWQgYnkgdGhlIExh
eWVyVHJlZUFnZW50LgorICAgICAgICBUaGlzIHRlc3QgaXMgc2tpcHBlZCBvbiBFRkwgd2hlcmUg
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcgaXMgbm90IGF2YWlsYWJsZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMTItMDQgIEp1c3NpIEt1a2tv
bmVuICA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogCiAgICAgICAgIE1ha2Ugc3ZnL2RvbS92
aWV3c3BlYy1wYXJzZXItKi5odG1sIG5vbi1mbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcx
YWY2ZDk1YTU4ZjRiZDVlZjFiMGFkMWRhNzIwNjNkMDIxYzIzYmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzNjMgQEAKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKwor
PT09IEVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFnZW50ID09PQorCitQQVNTCisKKz09PSBHZXQgdGhl
IGluaXRpYWwgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCit7CisgICAgImxheWVySWQiOiAic3Ry
aW5nIiwKKyAgICAiYm91bmRzIjogeworICAgICAgICAieCI6IDAsCisgICAgICAgICJ5IjogMCwK
KyAgICAgICAgIndpZHRoIjogODAwLAorICAgICAgICAiaGVpZ2h0IjogNjAwCisgICAgfSwKKyAg
ICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgImNv
bXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICJ4IjogMCwKKyAgICAgICAgInkiOiAwLAorICAg
ICAgICAid2lkdGgiOiA4MDAsCisgICAgICAgICJoZWlnaHQiOiA2MDAKKyAgICB9LAorICAgICJj
aGlsZExheWVycyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5n
IiwKKyAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgIngiOiAwLAorICAg
ICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAid2lkdGgiOiA4MDAsCisgICAg
ICAgICAgICAgICAgImhlaWdodCI6IDYwMAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisg
ICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAi
eCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0Ijog
MTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5
IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAi
bWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRz
IjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVt
YmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0Ijog
NTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAg
ICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0
aCI6IDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAg
ICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAid2lkdGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAw
CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVy
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJi
b3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjog
InN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ImhlaWdodCI6IDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
ImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMi
OiBbXQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiYm91bmRz
IjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAg
ICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAg
ICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ3aWR0aCI6IDIzNywKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAxNDQKKyAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAg
ICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAid2lkdGgiOiAyMzcsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0
IjogMTQ0CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJjaGls
ZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9
CisgICAgXQorfQorCis9PT0gTWVzc2FnZSB0aGUgcGFnZSB0byBhZGQgYSBuZXcgY29tcG9zaXRl
ZCBsYXllciA9PT0KKworUEFTUworCis9PT0gR2V0IHRoZSBtb2RpZmllZCBsYXllciB0cmVlID09
PQorCitQQVNTCisKK3sKKyAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICJib3VuZHMiOiB7
CisgICAgICAgICJ4IjogMCwKKyAgICAgICAgInkiOiAwLAorICAgICAgICAid2lkdGgiOiA3ODUs
CisgICAgICAgICJoZWlnaHQiOiA2MDAKKyAgICB9LAorICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVl
LAorICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAg
ICAgICAgIngiOiAwLAorICAgICAgICAieSI6IDAsCisgICAgICAgICJ3aWR0aCI6IDc4NSwKKyAg
ICAgICAgImhlaWdodCI6IDMwOTYKKyAgICB9LAorICAgICJjaGlsZExheWVycyI6IFsKKyAgICAg
ICAgeworICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICJib3Vu
ZHMiOiB7CisgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICJ5IjogMCwK
KyAgICAgICAgICAgICAgICAid2lkdGgiOiA3ODUsCisgICAgICAgICAgICAgICAgImhlaWdodCI6
IDYwMAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwK
KyAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJi
b3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwK
KyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6
IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisg
ICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAi
aGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
ImNoaWxkTGF5ZXJzIjogWworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngi
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6
IFtdCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5
IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAg
ICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3Vu
ZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJp
bmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXND
b21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5Ijog
Im51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMi
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdo
dCI6IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAg
ICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAi
d2lkdGgiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNl
LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJz
dHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAg
ICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJo
ZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjog
W10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDM3MCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAzMDk2CisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3Np
dGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjog
MzcwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDMwOTYKKyAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxh
eWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5Ijog
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVt
b3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjog
eworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CisKKz09PSBPYnRhaW4gdGhlIG5vZGUg
aWQgZm9yIHRoZSBuZXdseSBpbnNlcnRlZCBsYXllciA9PT0KKworUEFTUworCis9PT0gR2V0IGF0
dHJpYnV0ZXMgZm9yIHRoZSBuZXdseSBpbnNlcnRlZCBub2RlID09PQorCitQQVNTCisKKz09PSBU
ZXN0IGNvbXBsZXRlLCBhbGwgZXhwZWN0ZWQgY29uZGl0aW9ucyBtZXQgPT09CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5
Mzc0ZTNmZmRmMzdjM2JmOWNhOTNiMTczOWYxNjNhYTYzZGM5OGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sCkBAIC0wLDAg
KzEsMjUwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitm
dW5jdGlvbiBhZGRDb21wb3NpdGVkTGF5ZXIoKQoreworICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiY29tcG9z
aXRlZCI7CisgICAgZWxlbWVudC5pZCA9ICJsYXN0LWVsZW1lbnQiOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Cit9OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2
YXIgaW5pdGlhbExheWVyVHJlZTsKKyAgICB2YXIgZXZlbnRzQ291bnQgPSAwOworCisgICAgSW5z
cGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkxheWVyVHJlZS5sYXllclRyZWVEaWRDaGFuZ2UiXSA9
IGZ1bmN0aW9uIChtZXNzYWdlT2JqZWN0KSB7CisgICAgICAgIGV2ZW50c0NvdW50Kys7CisgICAg
fTsKKworICAgIGdldERvY3VtZW50KCk7CisgICAgCisgICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQo
KQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50IHNvIHRo
YXQgbGF0ZXIgb24gd2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBzdGVwKHsK
KyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAgIGNvbW1h
bmQ6ICJET00uZ2V0RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAg
ICAgICAgICBjYWxsYmFjazogZW5hYmxlTGF5ZXJUcmVlQWdlbnQKKyAgICAgICAgfSk7CisgICAg
fTsKKyAgICAKKyAgICBmdW5jdGlvbiBlbmFibGVMYXllclRyZWVBZ2VudChyZXN1bHQpCisgICAg
eworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJFbmFibGUgdGhlIExheWVyVHJl
ZSBhZ2VudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmVuYWJsZSIsCisgICAg
ICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNrOiBnZXRJbml0aWFs
TGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRJbml0aWFs
TGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFt
ZTogIkdldCB0aGUgaW5pdGlhbCBsYXllciB0cmVlIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJM
YXllclRyZWUuZ2V0TGF5ZXJUcmVlIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAg
ICAgICAgICAgY2FsbGJhY2s6IGdvdEluaXRpYWxMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIGZ1bmN0aW9uIGdvdEluaXRpYWxMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAg
ICAgICAgaW5pdGlhbExheWVyVHJlZSA9IHJlc3VsdC5sYXllclRyZWU7CisKKyAgICAgICAgZHVt
cExheWVyVHJlZShpbml0aWFsTGF5ZXJUcmVlKTsKKworICAgICAgICBzdGVwKHsKKyAgICAgICAg
ICAgIG5hbWU6ICJNZXNzYWdlIHRoZSBwYWdlIHRvIGFkZCBhIG5ldyBjb21wb3NpdGVkIGxheWVy
IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJSdW50aW1lLmV2YWx1YXRlIiwKKyAgICAgICAgICAg
IHBhcmFtZXRlcnM6IHsiZXhwcmVzc2lvbiI6ICJhZGRDb21wb3NpdGVkTGF5ZXIoKSJ9LAorICAg
ICAgICAgICAgY2FsbGJhY2s6IGdldE1vZGlmaWVkTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAg
IH07CisKKyAgICBmdW5jdGlvbiBnZXRNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgewor
ICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIG1vZGlmaWVkIGxheWVy
IHRyZWUiLAorICAgICAgICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5nZXRMYXllclRyZWUiLAor
ICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ290TW9k
aWZpZWRMYXllclRyZWUKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIHZhciBsYXllckNvdW50
ID0gMDsKKworICAgIGZ1bmN0aW9uIGdvdE1vZGlmaWVkTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7
CisgICAgICAgIGR1bXBMYXllclRyZWUocmVzdWx0LmxheWVyVHJlZSk7CisKKyAgICAgICAgdmFy
IG11dGF0aW9ucyA9IGxheWVyVHJlZU11dGF0aW9ucyhpbml0aWFsTGF5ZXJUcmVlLCByZXN1bHQu
bGF5ZXJUcmVlKTsKKyAgICAgICAgdmFyIGxhc3RJZCA9IG11dGF0aW9ucy5hZGRpdGlvbnNbMF07
CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiT2J0YWluIHRoZSBub2RlIGlk
IGZvciB0aGUgbmV3bHkgaW5zZXJ0ZWQgbGF5ZXIiLAorICAgICAgICAgICAgY29tbWFuZDogIkxh
eWVyVHJlZS5ub2RlSWRGb3JMYXllcklkIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibGF5
ZXJJZCI6IGxhc3RJZH0sCisgICAgICAgICAgICBjYWxsYmFjazogZ290Tm9kZUlkRm9yTGFzdExh
eWVyCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnb3ROb2RlSWRGb3JMYXN0
TGF5ZXIocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFyIGlkID0gcmVzdWx0Lm5vZGVJZDsKKyAg
ICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IGF0dHJpYnV0ZXMgZm9yIHRoZSBu
ZXdseSBpbnNlcnRlZCBub2RlIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00uZ2V0QXR0cmli
dXRlcyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGlkfSwKKyAgICAgICAg
ICAgIGNhbGxiYWNrOiBnb3ROb2RlQXR0cmlidXRlcworICAgICAgICB9KTsKKyAgICB9OworCisg
ICAgZnVuY3Rpb24gZ290Tm9kZUF0dHJpYnV0ZXMocmVzdWx0KQorICAgIHsKKyAgICAgICAgdmFy
IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzRGljdGlvbmFyeUZyb21BcnJheShyZXN1bHQuYXR0cmli
dXRlcyk7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzLmlkICE9PSAibGFzdC1lbGVtZW50IikKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiBEaWQgbm90IG9idGFpbiB0aGUgZXhw
ZWN0ZWQgZWxlbWVudCBmb3IgdGhlIGxhc3QgaW5zZXJ0ZWQgbGF5ZXIuIik7CisKKyAgICAgICAg
ZmluaXNoVGVzdCgpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKKyAgICB7
CisgICAgICAgIGlmICghZXZlbnRzQ291bnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiRkFJTDogRGlkIG5vdCByZWNlaXZlIGxheWVyVHJlZURpZENoYW5nZSBldmVudHMuIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSBUZXN0IGNv
bXBsZXRlLCBhbGwgZXhwZWN0ZWQgY29uZGl0aW9ucyBtZXQgPT09Iik7CisKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gbGF5ZXJU
cmVlTXV0YXRpb25zKG9sZExheWVyVHJlZSwgbmV3TGF5ZXJUcmVlKQorICAgIHsKKyAgICAgICAg
dmFyIG9sZEtleXMgPSBPYmplY3Qua2V5cyhmbGF0dGVuZWRMYXllclRyZWUob2xkTGF5ZXJUcmVl
KSk7CisgICAgICAgIHZhciBuZXdLZXlzID0gT2JqZWN0LmtleXMoZmxhdHRlbmVkTGF5ZXJUcmVl
KG5ld0xheWVyVHJlZSkpOworCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBhZGRpdGlv
bnM6IG5ld0tleXMuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gKG9sZEtleXMuaW5kZXhPZihrZXkpID09PSAtMSk7CisgICAgICAgICAgICB9KSwKKyAgICAg
ICAgICAgIHJlbW92YWxzOiBvbGRLZXlzLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIChuZXdLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpOworICAgICAgICAg
ICAgfSkKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZmxhdHRlbmVkTGF5ZXJU
cmVlKGxheWVyVHJlZSkKKyAgICB7CisgICAgICAgIHZhciBsYXllckJ5SWRzID0ge307CisKKyAg
ICAgICAgZnVuY3Rpb24gcmVjdXJzZShsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgbGF5
ZXJCeUlkc1tsYXllci5sYXllcklkXSA9IGxheWVyOworICAgICAgICAgICAgaWYgKGxheWVyLmNo
aWxkTGF5ZXJzKQorICAgICAgICAgICAgICAgIGxheWVyLmNoaWxkTGF5ZXJzLmZvckVhY2gocmVj
dXJzZSk7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICByZWN1cnNlKGxheWVyVHJlZSk7
CisKKyAgICAgICAgcmV0dXJuIGxheWVyQnlJZHM7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGF0
dHJpYnV0ZXNEaWN0aW9uYXJ5RnJvbUFycmF5KGF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICB2
YXIgZGljdGlvbmFyeSA9IHt9CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGF0dHJp
YnV0ZXMubGVuZ3RoOyBpIDwgY291bnQ7IGkgKz0gMikgeworICAgICAgICAgICAgZGljdGlvbmFy
eVthdHRyaWJ1dGVzW2ldXSA9IGF0dHJpYnV0ZXNbaSArIDFdOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBkaWN0aW9uYXJ5OworICAgIH07CisKKyAgICBmdW5jdGlvbiBkdW1wTGF5ZXJUcmVl
KGxheWVyVHJlZSkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHJlcGxhY2VyKGtleSwgdmFsdWUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChrZXkgPT09ICJsYXllcklkIiB8fCBrZXkgPT09
ICJtZW1vcnkiKQorICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YodmFsdWUpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG4iICsgSlNPTi5zdHJpbmdpZnkobGF5ZXJUcmVl
LCByZXBsYWNlciwgIiAgICAiKSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgdGVzdC5uYW1lICsg
IiA9PT1cbiIpCisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQodGVzdC5jb21tYW5k
LCB0ZXN0LnBhcmFtZXRlcnMsIGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpIHsKKyAgICAgICAgICAg
IGlmIChtZXNzYWdlT2JqZWN0Lmhhc093blByb3BlcnR5KCJlcnJvciIpKSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLm1l
c3NhZ2UgKyAiICgiICsgbWVzc2FnZU9iamVjdC5lcnJvci5jb2RlICsgIikiKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBB
U1MiKTsKKyAgICAgICAgICAgIHRlc3QuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5yZXN1bHQpOwor
ICAgICAgICB9KTsKKyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7
CisKKzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIAorICAgIGRpdiB7
CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgdG9wOiAwOworICAgICAgICBs
ZWZ0OiAwOworICAgIH0KKyAgICAgIAorICAgIC5yZWd1bGFyIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBi
bGFjazsKKyAgICB9CisKKyAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIHRvcDogMjVweDsKKyAg
ICAgICAgbGVmdDogMjVweDsKKyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDog
NTBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgfQorICAgICAgCisgICAgLm9mZnNldCB7Cisg
ICAgICAgIGxlZnQ6IDIwMHB4OworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRl
WigwKTsKKyAgICB9CisKKyAgICBidXR0b24geworICAgICAgICBtYXJnaW4tbGVmdDogMjBweDsK
KyAgICAgICAgbWFyZ2luLXRvcDogMTIwcHg7CisgICAgfQorICAgICAgCis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CisKKyAgICA8ZGl2IGNsYXNzPSJyZWd1bGFyIj48L2Rpdj4KKworICAgIDxk
aXYgY2xhc3M9ImNvbXBvc2l0ZWQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj48
L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9InJlZ3VsYXIgb2Zmc2V0Ij4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+PC9kaXY+CisgICAgPC9kaXY+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNTAyM2M4YTViYTM0MzViOTNiYTQ0N2YzYjgyYTk3NjU0MjMyY2FhYS4uODgxN2IzZjk5YTlm
ODZhYWQyY2IzZGI3N2E0OWZlMDllNzUwMWVlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2ODAsNiArMTY4MCw5IEBAIHdlYmtpdC5vcmcvYi8xMDA4
NTUgaWV0ZXN0Y2VudGVyL2NzczMvdGV4dC90ZXh0c2hhZG93LTAwOC5odG0gWyBJbWFnZU9ubHlG
YWlsdXJlCiB3ZWJraXQub3JnL2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1w
YXVzZS1kZWRpY2F0ZWQtd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDA4NDYg
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXRlcm1pbmF0ZS1kZWRpY2F0ZWQtd29ya2VyLXdo
aWxlLXBhdXNlZC5odG1sIFsgU2tpcCBdCiAKKyMgQUNDRUxFUkFURURfQ09NUE9TSVRJTkcgaXMg
cmVxdWlyZSBmb3IgTGF5ZXIgdHJlZSBpbnNwZWN0aW9uIHRlc3QgdG8gcGFzcworQnVnKEVGTCkg
d2Via2l0Lm9yZy9iLzEwMzUxMyBpbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sIFsg
U2tpcCBdCisKICMgTmV3IG1lZGlhIHRlc3QgaW50cm9kdWNlZCBpbiByMTMzNjYwIGZhaWxzLgog
d2Via2l0Lm9yZy9iLzEwMTQzOSBtZWRpYS9wcm9ncmVzcy1ldmVudHMtZ2VuZXJhdGVkLWNvcnJl
Y3RseS5odG1sIFsgRmFpbHVyZSBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>178199</attachid>
            <date>2012-12-07 05:03:24 -0800</date>
            <delta_ts>2012-12-07 05:03:24 -0800</delta_ts>
            <desc>[DIFF] chromium actual diff</desc>
            <filename>layer-tree-diff.txt</filename>
            <type>text/plain</type>
            <size>2303</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">LS0tIC91c3IvbG9jYWwvZ29vZ2xlL2NvZGUvY2hyb21pdW0vc3JjL3dlYmtpdC9SZWxlYXNlL2xh
eW91dC10ZXN0LXJlc3VsdHMvaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQu
dHh0CisrKyAvdXNyL2xvY2FsL2dvb2dsZS9jb2RlL2Nocm9taXVtL3NyYy93ZWJraXQvUmVsZWFz
ZS9sYXlvdXQtdGVzdC1yZXN1bHRzL2luc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWFjdHVh
bC50eHQKQEAgLTE1MCwxNiArMTUwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICJib3VuZHMi
OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAieSI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAyMzcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTQ0Ci0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAotICAgICAgICAgICAg
ICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCi0gICAgICAgICAgICAgICAgICAgICJjb21wb3Np
dGVkQm91bmRzIjogewotICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgInkiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjog
MjM3LAotICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDE0NAorICAgICAgICAgICAg
ICAgICAgICAgICAgIndpZHRoIjogMjI4LAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdo
dCI6IDE2MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXND
b21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIi
LAorICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDIyOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJoZWlnaHQiOiAxNjAKICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICAgICAgImNoaWxkTGF5ZXJzIjogW10KICAgICAgICAgICAgICAgICB9CkBAIC0xOTAsNyArMTkw
LDcgQEAKICAgICAgICAgIngiOiAwLAogICAgICAgICAieSI6IDAsCiAgICAgICAgICJ3aWR0aCI6
IDc4NSwKLSAgICAgICAgImhlaWdodCI6IDMwOTYKKyAgICAgICAgImhlaWdodCI6IDM0NDAKICAg
ICB9LAogICAgICJjaGlsZExheWVycyI6IFsKICAgICAgICAgewpAQCAtMzE1LDE2ICszMTUsMTYg
QEAKICAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICJ4IjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJ3aWR0aCI6IDM3MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJoZWln
aHQiOiAzMDk2Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICJp
c0NvbXBvc2l0ZWQiOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJl
ciIsCi0gICAgICAgICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogewotICAgICAgICAg
ICAgICAgICAgICAgICAgIngiOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMzcwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgImhlaWdodCI6IDMwOTYKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDM2
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAzNDQwCisgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAg
ICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
IndpZHRoIjogMzYxLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDM0NDAKICAg
ICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjog
W10KICAgICAgICAgICAgICAgICB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178217</attachid>
            <date>2012-12-07 07:43:15 -0800</date>
            <delta_ts>2012-12-07 07:50:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121207164029.patch</filename>
            <type>text/plain</type>
            <size>61433</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjYjc1NTQxYzlhYjU4
NTA0NWM5N2I5Mzc5YjExMTQ0ZDJmZGFjMS4uMTcxNGIwYjFmMjRlNGNlNTQzODg3YjY5YjZlY2Vl
OWY0ZTE2OTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTEyLTA1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2UKKyAgICAgICAgd2l0aCBXZWJDb3JlIHRvIGFjY2VzcyBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlCisgICAgICAgIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFj
a2VkIGJ5IHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
CisgICAgICAgIGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVB
Z2VudCB3aGljaCB3aWxsIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIAorICAgICAgICBjaGFuZ2Vz
IHRvIHRoZSByZW5kZXIgbGF5ZXIgdHJlZSB2aWEgYSBuZXcgbGF5ZXJUcmVlRGlkQ2hhbmdlIGV2
ZW50LCBwcm92aWRpbmcgYW4gb2JqZWN0CisgICAgICAgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBo
aWVyYXJjaHkgb2YgUmVuZGVyTGF5ZXJzIGZvciB0aGUgaW5zcGVjdGVkIGRvY3VtZW50LiBUaGlz
IGhpZXJhcmNoeSAKKyAgICAgICAgY2FuIGJlIHF1ZXJpZWQgYXQgYW55IHRpbWUgdXNpbmcgdGhl
IC5nZXRMYXllclRyZWUoKSBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50LiBGaW5hbGx5LCAK
KyAgICAgICAgdGhlIExheWVyVHJlZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXll
cklkKCkgbWV0aG9kIGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIAorICAgICAgICBub2Rl
IGFzc29jaWF0ZWQgd2l0aCB0aGUgUmVuZGVyTGF5ZXIgd2l0aCB0aGUgcHJvdmlkZWQgbGF5ZXIg
aWQuCisgICAgICAgIAorICAgICAgICBJbiB0ZXJtcyBvZiBpbXBsZW1lbnRhdGlvbiwgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yIGhhcyBiZWVuIGNoYW5nZWQgc3VjaCB0aGF0IGluIGl0cyAKKyAgICAg
ICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoKSBtZXRob2Qgd2UgY2FsbCB0aGUgbGF5ZXJUcmVl
RGlkQ2hhbmdlIG1ldGhvZCBvbiB0aGUgCisgICAgICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50
IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLgorCisgICAgICAgIFRl
c3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwKKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjogRGVmaW5lIG5ldyB0
eXBlcyBJbnRSZWN0ICh4LCB5LCB3aWR0aCwgaGVpZ2h0KSBhbmQgTGF5ZXIsIHdoaWNoIAorICAg
ICAgICBob2xkcyB0aGUgaW5mb3JtYXRpb24gZm9yIGEgUmVuZGVyTGF5ZXIgKGxheWVySWQsIGJv
dW5kcywgaXNDb21wb3NpdGVkLCBtZW1vcnksIAorICAgICAgICBjb21wb3NpdGVkQm91bmRzKSBh
bmQgaXRzIGNoaWxkcmVuIChjaGlsZExheWVycykuIFdlIGFsc28gZGVmaW5lIHRoZSBtZXRob2Rz
IG9mIHRoZSAKKyAgICAgICAgTGF5ZXJUcmVlQWdlbnQgb2JqZWN0IChlbmFibGUsIGRpc2FibGUs
IGdldExheWVyVHJlZSwgbm9kZUlkRm9yTGF5ZXJJZCkgYW5kIHRoZSAKKyAgICAgICAgbGF5ZXJU
cmVlRGlkQ2hhbmdlIGV2ZW50IGl0ICAKKyAgICAgICAgZmlyZXMuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0
aEZvclJlbmRlckxheWVyVG9Gcm9udGVuZCk6IE5ldyBtZXRob2QgZmFjaWxpdGF0aW5nIAorICAg
ICAgICBwdXNoaW5nIHRoZSBub2RlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIFJlbmRlckxheWVy
IHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDb21taXRMb2FkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclRyZWVBZ2VudFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fklu
c3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpzZXRGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
bGF5ZXJUcmVlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpyZW5kZXJMYXllckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Z2V0TGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvclJvb3RMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6IEJ1
aWxkIHRoZSBlbnRpcmUgaGllcmFyY2h5IG9mIAorICAgICAgICBSZW5kZXJMYXllcnMgZnJvbSB0
aGUgcHJvdmlkZWQgUmVuZGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp1bmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6Om5vZGVJZEZvckxheWVySWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1
bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgIChJbnN0cnVtZW50
aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6Omluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6OnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpOiBDYWxsIHRoZSBsYXllclRyZWVEaWRD
aGFuZ2UgbWV0aG9kIAorICAgICAgICBvbiB0aGUgTGF5ZXJUcmVlQWdlbnQgdmlhIHRoZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24gdG8gaW5mb3JtIHRoZSBmcm9udC1lbmQgdGhhdCB0aGUgCisg
ICAgICAgIFJlbmRlckxheWVyIGhpZXJhcmNoeSBoYXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckJlY2Ft
ZU5vbkNvbXBvc2l0ZWQpOiBDYWxsIHRoZSByZW5kZXJMYXllckRlc3Ryb3llZCAKKyAgICAgICAg
bWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudCB2aWEgdGhlIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbiB0byB1bmJpbmQgdGhlIGxheWVyIHRoYXQgaXMgCisgICAgICAgIGJlaW5nIGRlc3Ryb3ll
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAg
IChSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorCiAyMDEyLTEyLTA0ICBNaWNoYWVsIFBydWV0dCAg
PG1pY2hhZWxANjhrLm9yZz4KIAogICAgICAgICBbSlNDXSBHZW5lcmF0ZSB2aXNpdENoaWxkcmVu
KCkgZm9yIHVuY3VzdG9taXplZCBFdmVudFRhcmdldCBpbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDk1MGEzNjA5YTdmYTBhOTBjNTUzOTU0ZDMzNmNkMjI3ODcxMGMwZTUuLmVjMjI0
YTI3ZDRlNzI3MWEzYjg1NWMwODRiNzM3MmFhNGI5NjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xNTk5LDYgKzE1OTksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckhpc3RvcnkuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDVhZjdlZjU2MWMwN2ZkYjkyOGU4NDQ1M2IyYmU4ZmM3ZTQ3YzYw
NjAuLmI2ZDRiMWEyMWExMDY1NGZiZGUzOTk4NzA2ZDBjOGEzODZiZTRhNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzc0Miw2ICszNzQyLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCAyOTkwMjFjOWUyZmMzNmVjMmFiYzhjNmRlNWQ0NWE4ZDIwOGE0NGRhLi44NjYzMDAyMTY0
MTgzZWZiZDBlNmQ2NmJhNmY1ZjZlOTNlOTk5OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTc3Myw2ICs3
NzMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCkBAIC0xOTIxLDYgKzE5MjIsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JIaXN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3
MGYuLmIyMGU1Y2JmMmY1ZWQ5OTdhZDRlYzQzYzkzOWYwZWM2ZWVkNjM2YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI4ODIsNiArMjg4Miw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZTk5NDgwYzlkNDAxODI3Y2Ni
NDJkOWEyN2E4ZDZlNzRlOGU0NzEzOC4uMzMyMTk1MWNhMzJiODRhYzQ1MzMxY2QwZjE1NjRlYzVm
MmVmMWM2NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTc1NDcwLDYgKzc1NDcwLDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MGZlMzc4MzRmNzllNmNm
MWNjZDFhNTRjNWRlZGQyNGU5NDlhOGZiLi5kYTNiNTUzYjM2ZmRmMzcyMjM5ZmFmNDM5M2RlYzk4
MmZiZmMwNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xOTEwLDYgKzE5MTAsOCBAQAogCQk3MTkwNERFQTE1NkE2MzNBMDAx
RTFCQTUgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE4NTEyMzMxNTY4NjQ5ODAw
QzQwOTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLzsgfTsKIAkJNzFBNTdERjExNTRC
RTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNW
R1BhdGhVdGlsaXRpZXMuY3BwICovOyB9OwogCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyog
U1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAq
LzsgfTsKKwkJNzFCMUUxMjUxNjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIx
RTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLzsgfTsK
KwkJNzFCMUUxMjYxNjQwNDkxQTAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjFFMTIz
MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi87IH07CiAJ
CTcxQ0M3QTIwMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQ0M3QTFGMTUy
QTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLzsgfTsKIAkJNzFE
Q0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MURDQjZGRjE1NjgxOTc2MDA4NjIy
NzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDIxNTY4MTk3NjAwODYy
MjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBh
bi5oICovOyB9OwpAQCAtOTE5Myw2ICs5MTk1LDggQEAKIAkJNzE4NTEyMzMxNTY4NjQ5ODAwQzQw
OTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHVmll
d1NwZWNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEg
LyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJB
MEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRENCNkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NW
R1pvb21BbmRQYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
Vkdab29tQW5kUGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I3MDAx
NTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NWR1pvb21BbmRQYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0ODI3LDYgKzE0ODMxLDggQEAKIAkJCQlBQTczMTgzQzE1OTI1NUI5MDBBOTNFNkUg
LyogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwICovLAogCQkJCUFBNzMxODNEMTU5MjU1
QjkwMEE5M0U2RSAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oICovLAogCQkJCUFBOTAz
MEZFMTU3RTE2QTAwMDI3NjI0NyAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cyAqLywKKwkJCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwICovLAorCQkJCTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oICovLAogCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJ
bmplY3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyog
SW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLywKQEAgLTIzMzQ0LDYgKzIzMzUwLDcgQEAKIAkJCQk4
NTAyQUI1NDBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jR0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDJBQjk4MEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxl
bWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAyQUI1NjBBRDQzOEMwMDAzNzg1
NDAgLyogRE9NU1ZHRkVGdW5jUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjFFMTI1
MTY0MDQ4RjcwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODUwMkFCOTkwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY1JFbGVtZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjU4MEFENDM4QzAwMDM3ODU0MCAv
KiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJB
QjlBMEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjIwNSw2ICsyNjIxMiw3IEBACiAJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQk3MUIxRTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFD
IC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjlDMTZFMTMwMEMyRTIwMDJENzk0RSAvKiBBY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNDU0
NTM5ZjY2YTlmYmQ1ZTJlM2UwYWI3Y2Y0NDJjNmY4NzQ2OTIxOC4uYWQyNTA1NTM5MTZhNDBmNjA4
ZjVjM2VlNWQwMWM4MGI3MjNmOWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtMzI0Miw1ICszMjQyLDcyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIF0s
CiAgICAgICAgICJldmVudHMiOiBbXQorICAgIH0sCisgICAgeworICAgICAgICAiZG9tYWluIjog
IkxheWVyVHJlZSIsCisgICAgICAgICJoaWRkZW4iOiB0cnVlLAorICAgICAgICAidHlwZXMiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkxheWVySWQiLAorICAgICAg
ICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlVuaXF1ZSBSZW5kZXJMYXllciBpZGVudGlmaWVyLiIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkludFJlY3QiLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEg
cmVjdGFuZ2xlLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIHggcG9zaXRpb24uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInki
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSB5IHBvc2l0aW9uLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIHdpZHRoIG1ldHJpYy4iIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgaGVpZ2h0IG1ldHJpYy4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJMYXllciIsCisgICAgICAg
ICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiSW5mb3JtYXRpb24gYWJvdXQgYSBjb21wb3NpdGluZyBsYXllci4iLAorICAgICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVy
SWQiLCAiJHJlZiI6ICJMYXllcklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSB1bmlxdWUgaWQgZm9y
IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdW5kcyIs
ICIkcmVmIjogIkludFJlY3QiLCAiZGVzY3JpcHRpb24iOiAiQm91bmRzIG9mIHRoZSBsYXllci4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNDb21wb3NpdGVkIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVy
IGlzIGNvbXBvc2l0ZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9y
eSIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
RXN0aW1hdGVkIG1lbW9yeSB1c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImNvbXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2YgdGhlIGNvbXBvc2l0
ZWQgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNoaWxkTGF5ZXJz
IiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjog
IkxheWVyIiB9LCAiZGVzY3JpcHRpb24iOiAiQ2hpbGQgbGF5ZXJzLiIgfQorICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImNvbW1hbmRzIjogWwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0
aW9uLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVz
IGNvbXBvc2l0aW5nIHRyZWUgaW5zcGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldExheWVyVHJlZSIsCisgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIG9m
IHRoZSBjdXJyZW50IHBhZ2UuIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllclRyZWUiLCAiJHJlZiI6ICJMYXllciIsICJk
ZXNjcmlwdGlvbiI6ICJMYXllciB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIg
fQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAibm9kZUlkRm9yTGF5ZXJJZCIsCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5vZGUgaWQgZm9yIGEgZ2l2ZW4gbGF5ZXIgaWQu
IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJsYXllcklkIiwgIiRyZWYiOiAiTGF5ZXJJZCIgfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgbm9kZSBpZCBmb3IgdGhlIGdpdmVuIGxheWVyIGlkLiIgfQorICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiCisgICAg
ICAgICAgICB9CisgICAgICAgIF0KICAgICB9XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggZDE5YWQyZTBhMDIzYjk5YTg2NDQ1Njdh
MzE0Zjc0YTFkZmY3MDcxZi4uMDMwMWIxY2NhZGE1MjUzZjBlOWFiZTVlOGIxODY5NjFmODBhOTBm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3Bw
CkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5jcHAiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
IgogI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0
b3JPdmVybGF5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIy
NGNhMTcwYjk2NDcwY2E5ZTc2MzdkOWQwNDk3ZmExZmUxMDhhOTQuLjc5YWQ4NmRiYjkyZTMyYzQ0
M2M5N2RlYWQwNTBiYzcyZjUwNWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKQEAgLTE1MSw2ICsxNTIsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSkpOwogCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdl
dCgpLCBwYWdlKSk7CisKICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9y
Q2xpZW50KTsKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0
KCktPmluaXQobV9pbnNwZWN0b3JBZ2VudAogICAgICAgICAsIGNvbnNvbGVBZ2VudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOWI4ODkw
YWM2NjAyMWE5NDI5ZGI3NTk0NzdhZGIxY2E0MDMxZmRiNS4uZmUwMWU3M2Y0NWE2MDU0ZTQ3ZTA4
YjMwM2MyMGM0YWU5MWVlYTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01NjMsNiArNTYzLDExIEBAIGludCBJbnNwZWN0b3JET01B
Z2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgIHJldHVy
biBtYXAtPmdldChub2RlVG9QdXNoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNo
Tm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRl
ckxheWVyKQoreworICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHJlbmRlckxheWVy
LT5yZW5kZXJlcigpLT5ub2RlKCkpOworfQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5k
Tm9kZUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5n
ZXQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CmluZGV4IGY3Y2M1ZmIxOGFkMThmMTg5ZDk5NTI2OTNhYTU0ZTBkYjZiYWFlNjIuLjNjZmNlN2I2
M2U4YjFjZDEyYzIyNTI1N2Y2YjliM2E4MzRiMzg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xOTksNiArMjAwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAg
ICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsg
fQorICAgIGludCBwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVu
ZGVyTGF5ZXIqKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDBhY2Yz
MDM4YjZiZGQ1NDkzNmUwMGUyZDE0NjA4ZTgwMzliNjI4MzQuLmEzYTRjMTg5NWFiYmJmZjk5MzI0
YWU3OWMxMjI5OTI4YTVkMGQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oIgpAQCAtOTAwLDcgKzkwMSwxMCBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudAogICAgICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5jbGVhclJlc291cmNlcygpOwog
ICAgICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1
bWVudChtYWluRnJhbWUtPmRvY3VtZW50KCkpOwotCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAg
ICAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZXNldCgpOworI2VuZGlmCiAgICAgICAgIGluc3Bl
Y3RvckFnZW50LT5kaWRDb21taXRMb2FkKCk7CiAgICAgfQogICAgIGlmIChJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2Vu
dCgpKQpAQCAtMTI4OCw2ICsxMjkyLDIwIEBAIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJCiAgICAg
cmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5n
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPmxheWVyVHJlZURpZENoYW5nZSgpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPnJlbmRlckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBiYTQ0N2Y4ZDA2MzU1ZmRjZmRkOTI0NTg3OWQzYjhlN2VmOThkN2QyLi42ZjY3ZGRiOGY2
ZmFhY2EyYTRlOWQ3NjM5MGY4MDdjYjE1ZjU1NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBA
IGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CitjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJl
bmRlck9iamVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CkBAIC0yNzgsNiArMjc5LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmll
bnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVu
dGF0aW9uRGF0YSopOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0
YXRpYyB2b2lkIGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVu
ZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwog
cHJpdmF0ZToKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9N
V3JhcHBlcldvcmxkKik7CkBAIC00NTUsNiArNDYxLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRp
b25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKwor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRy
ZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlbmRl
ckxheWVyKik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CiAj
ZW5kaWYKIH07CkBAIC0xNTIwLDYgKzE1MzIsMjAgQEAgaW5saW5lIERldmljZU9yaWVudGF0aW9u
RGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW8K
ICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVy
VHJlZURpZENoYW5nZShQYWdlKiBwYWdlKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkp
CisgICAgICAgIGxheWVyVHJlZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0
cm95ZWQoUGFnZSogcGFnZSwgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVkSW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzLCByZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bGxlY3RpbmdIVE1MUGFyc2VFcnJvcnMoUGFnZSogcGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjYjVlOTI0MGExYWE2Y2MzMzUyYTNhNmQ4YzQyYjY5Nzg0MDRlNzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgor
I2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5ZXJUcmVlQWdlbnRTdGF0
ZSB7CitzdGF0aWMgY29uc3QgY2hhciBsYXllclRyZWVBZ2VudEVuYWJsZWRbXSA9ICJsYXllclRy
ZWVBZ2VudEVuYWJsZWQiOworfTsKKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAgICA6IEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGluc3RydW1lbnRpbmdB
Z2VudHMsIHN0YXRlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250
ZW5kKDApCit7Cit9CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoKQoreworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBt
X2Zyb250ZW5kID0gZnJvbnRlbmQtPmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAg
ICBkaXNhYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3Jl
KCkKK3sKKyAgICBlbmFibGUoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OnJlc2V0KCkKK3sKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7CisgICAgbV9p
ZFRvTGF5ZXIuY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFn
ZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYg
KCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50
RW5hYmxlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVy
VHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgZmFsc2UpOworICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCit7CisgICAg
bV9mcm9udGVuZC0+bGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKiByZW5k
ZXJMYXllcikKK3sKKyAgICB1bmJpbmQocmVuZGVyTGF5ZXIpOworfQorCit2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+JiBvYmplY3QpCit7CisgICAgb2JqZWN0ID0gYnVpbGRP
YmplY3RGb3JSb290TGF5ZXIoKTsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExh
eWVyKCkKK3sKKyAgICByZXR1cm4gYnVpbGRPYmplY3RGb3JMYXllcihtX2luc3BlY3RlZFBhZ2Ut
Pm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5yb290UmVuZGVy
TGF5ZXIoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVy
KiByZW5kZXJMYXllcikKK3sKKyAgICBib29sIGlzQ29tcG9zaXRlZCA9IHJlbmRlckxheWVyLT5p
c0NvbXBvc2l0ZWQoKTsKKworICAgIC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgorICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldExheWVySWQoYmlu
ZChyZW5kZXJMYXllcikpCisgICAgICAgIC5zZXRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0
KGVuY2xvc2luZ0ludFJlY3QocmVuZGVyTGF5ZXItPmxvY2FsQm91bmRpbmdCb3goKSkpKQorICAg
ICAgICAuc2V0SXNDb21wb3NpdGVkKGlzQ29tcG9zaXRlZCk7CisKKyAgICAvLyBPcHRpb25hbCBw
cm9wZXJ0aWVzIGZvciBjb21wb3NpdGVkIGxheWVycyBvbmx5LgorICAgIGlmIChpc0NvbXBvc2l0
ZWQpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXIt
PmJhY2tpbmcoKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldE1lbW9yeShiYWNraW5nLT5iYWNr
aW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldENvbXBv
c2l0ZWRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGJhY2tpbmctPmNvbXBvc2l0ZWRCb3Vu
ZHMoKSkpOworICAgIH0KKworICAgIC8vIFByb2Nlc3MgY2hpbGRyZW4gbGF5ZXJzLgorICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+ID4g
Y2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj46OmNyZWF0ZSgpOworCisgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJ
Zk5lZWRlZCgpOworCisgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHJlZmxlY3Rpb24gbGF5ZXIu
CisgICAgaWYgKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkKKyAgICAgICAgY2hpbGRy
ZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHJlbmRlckxheWVyLT5yZWZsZWN0
aW9uTGF5ZXIoKSkpOworCisgICAgaWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgp
KSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJl
bmRlckxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6
ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobmVnWk9yZGVyTGlzdC0+YXQoaSkpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3Qg
PSByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAgICBzaXplX3QgbGlzdFNp
emUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1
aWxkT2JqZWN0Rm9yTGF5ZXIobm9ybWFsRmxvd0xpc3QtPmF0KGkpKSk7CisgICAgfQorICAgIAor
ICAgIGlmIChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+cG9zWk9y
ZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0
LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyAr
K2kpCisgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZv
ckxheWVyKHBvc1pPcmRlckxpc3QtPmF0KGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
YXllck9iamVjdC0+c2V0Q2hpbGRMYXllcnMoY2hpbGRyZW5BcnJheSk7CisgICAgCisgICAgcmV0
dXJuIGxheWVyT2JqZWN0OworfQorCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFgocmVjdC54KCkpCisgICAgICAgIC5z
ZXRZKHJlY3QueSgpKQorICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0aCgpKQorICAgICAgICAu
c2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpLnJlbGVhc2UoKTsKK30KKworU3RyaW5nIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBp
ZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBt
X2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXllcik7CisgICAgaWYgKGlkZW50aWZpZXIuaXNO
dWxsKCkpIHsKKyAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpOworICAgICAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnNldChsYXllciwg
aWRlbnRpZmllcik7CisgICAgICAgIG1faWRUb0xheWVyLnNldChpZGVudGlmaWVyLCBsYXllcik7
CisgICAgfQorICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50Ojp1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIFN0cmlu
ZyBpZGVudGlmaWVyID0gbV9kb2N1bWVudExheWVyVG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlm
IChpZGVudGlmaWVyLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50
TGF5ZXJUb0lkTWFwLnJlbW92ZShsYXllcik7CisgICAgbV9pZFRvTGF5ZXIucmVtb3ZlKGlkZW50
aWZpZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2RlSWRGb3JMYXll
cklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBpbnQq
IHJlc3VsdE5vZGVJZCkKK3sKKyAgICAvLyBPYnRhaW4gdGhlIFJlbmRlckxheWVyIGZyb20gdGhl
IGlkZW50aWZpZXIgcHJvdmlkZWQuCisgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVy
ID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOworICAgIAorICAgIC8vIFNlbmQgYW4gZXJyb3Ig
aWYgdGhlcmUgaXMgbm8gc3VjaCByZWdpc3RlcmVkIGxheWVyIGlkLgorICAgIGlmICghcmVuZGVy
TGF5ZXIpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIGEgYm91bmQg
bGF5ZXIgZm9yIHRoZSBwcm92aWRlZCBpZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgLy8gR2V0IHRoZSBub2RlIGlkIGZyb20gdGhlIERPTSBhZ2VudCBhbmQgcmV0dXJuIGl0
IHRvIHRoZSBmcm9udC1lbmQuCisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGluc3BlY3RvckRPTUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpOworICAgICpy
ZXN1bHROb2RlSWQgPSBpbnNwZWN0b3JET01BZ2VudC0+cHVzaE5vZGVQYXRoRm9yUmVuZGVyTGF5
ZXJUb0Zyb250ZW5kKHJlbmRlckxheWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MTFiODY1MjA4ZmFjNDA1NmY3NWNhYjdjY2Uy
MTkzZmQyZTJiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaAor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OworY2xhc3MgUGFnZTsKKwordHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIElu
c3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JMYXllclRyZWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TGF5
ZXJUcmVlQ29tbWFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvckxheWVyVHJlZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChpbnN0
cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgcGFnZSkpOworICAgIH0KKyAgICB+SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVh
bCB2b2lkIHJlc3RvcmUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZSgpOworICAgIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVy
TGF5ZXIqKTsKKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCisgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGdldExheWVyVHJlZShFcnJvclN0cmluZyos
IFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbm9kZUlkRm9yTGF5ZXJJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwg
aW50KiByZXN1bHROb2RlSWQpOworCitwcml2YXRlOgorICAgIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqKTsKKworICAg
IC8vIFJlbmRlckxheWVyLXJlbGF0ZWQgbWV0aG9kcy4KKyAgICBTdHJpbmcgYmluZChjb25zdCBS
ZW5kZXJMYXllciopOworICAgIHZvaWQgdW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CisKKyAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZv
clJvb3RMYXllcigpOyAgIAorICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAg
ICBJbnNwZWN0b3JGcm9udGVuZDo6TGF5ZXJUcmVlKiBtX2Zyb250ZW5kOworCisgICAgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKKyAg
ICBIYXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjEx
NmY5NDMxM2MyYjI4N2JlYjc4ZWU5ZDcyZTE3YjQ1Zi4uN2UyNzA5ZjcyZWM4YzdmZWIzMzE3MGIz
ZWUwMjM4NWExZWM2YTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OworY2xhc3MgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKQEAg
LTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAg
ICAgICAgLCBtX2luc3BlY3RvclBhZ2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NT
QWdlbnQoMCkKKyAgICAgICAgLCBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAg
ICwgbV9pbnNwZWN0b3JDb25zb2xlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFn
ZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAg
KzE1NSwxOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNh
bnZhc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAg
IHZvaWQgc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yQ2FudmFzQWdlbnQgPSBhZ2VudDsgfQogCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBpbnNwZWN0b3JM
YXllclRyZWVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7
IH0KKyAgICB2b2lkIHNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3BlY3RvckxheWVyVHJl
ZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owog
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9pbnNwZWN0b3JQYWdlQWdlbnQ7CiAgICAgSW5zcGVj
dG9yQ1NTQWdlbnQqIG1faW5zcGVjdG9yQ1NTQWdlbnQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVy
VHJlZUFnZW50OworI2VuZGlmCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3Rv
ckNvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2Vu
dDsKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3NzAuLmEwYWM1
YTE0YzUxNGE1MzUxMjU1NTdmODEyZTZhMjA2ZWVjZmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCkBAIC01MDgsNiArNTA5LDE4IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0
ZVR5cGUgdXBkYXRlCiAKICAgICBpZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAg
ICAgICAgZW5hYmxlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUg
aW5zcGVjdG9yIHRoYXQgdGhlIGxheWVyIHRyZWUgaGFzIGNoYW5nZWQuCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UocGFnZSgpKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIpCit7CisgICAgLy8gSW5mb3JtIHRoZSBpbnNwZWN0b3IgdGhh
dCB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgd2FzIGRlc3Ryb3llZC4KKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKHBhZ2UoKSwgcmVuZGVyTGF5ZXIpOwor
CisgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKKyAgICAtLW1fY29tcG9z
aXRlZExheWVyQ291bnQ7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNTE5MzQxMWEyZDcx
MGU3OWUyMzhmNTEwYmY3NGFlMGU2YTFmZGNhMS4uZTg5ZWM3OWQyYTE0MjM5YzFlOGRhZjdkYzQy
MjY0NWRlYzg2NzkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaApAQCAtMTcwLDExICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckJhY2tpbmdGb3JBbGxMYXllcnMoKTsKICAgICAKICAgICB2b2lkIGxheWVyQmVjYW1lQ29t
cG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIHsgKyttX2NvbXBvc2l0ZWRMYXllckNvdW50OyB9
Ci0gICAgdm9pZCBsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKLSAgICAg
ICAgLS1tX2NvbXBvc2l0ZWRMYXllckNvdW50OwotICAgIH0KKyAgICB2b2lkIGxheWVyQmVjYW1l
Tm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIAogI2lmIEVOQUJMRShWSURF
TykKICAgICAvLyBVc2UgYnkgUmVuZGVyVmlkZW8gdG8gYXNrIGlmIGl0IHNob3VsZCB0cnkgdG8g
dXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlYTdjOTYzZWI3MmFjMDJhMjBm
NTU2ZDM2MGYwNTgyNTFkYWJiZTIuLjNhMzhjNmFmNDJkNjExNzExN2QzMGQ5OTE1YTE5OGY4NDg3
YjU2ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wNSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgdGhlIGJhY2tlbmQgZm9yIGV4
cG9zaW5nIHRoZSBsYXllciB0cmVlIHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBMYXlvdXRUZXN0IHRo
YXQgZXhlcmNpc2VzIHRoZSB2YXJpb3VzIEFQSXMgYW5kIGV2ZW50IGV4cG9zZWQgYnkgdGhlIExh
eWVyVHJlZUFnZW50LgorICAgICAgICBUaGlzIHRlc3QgaXMgc2tpcHBlZCBvbiBFRkwgd2hlcmUg
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcgaXMgbm90IGF2YWlsYWJsZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMTItMDQgIEp1c3NpIEt1a2tv
bmVuICA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogCiAgICAgICAgIE1ha2Ugc3ZnL2RvbS92
aWV3c3BlYy1wYXJzZXItKi5odG1sIG5vbi1mbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
YTc1ZmU3Yzc4MmQ4NzhhMTljMmFmOGRkMTliZjExMDU0YjZlOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzNjMgQEAKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKwor
PT09IEVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFnZW50ID09PQorCitQQVNTCisKKz09PSBHZXQgdGhl
IGluaXRpYWwgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCit7CisgICAgImxheWVySWQiOiAic3Ry
aW5nIiwKKyAgICAiYm91bmRzIjogeworICAgICAgICAieCI6IDAsCisgICAgICAgICJ5IjogMCwK
KyAgICAgICAgIndpZHRoIjogIm51bWJlciIsCisgICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgor
ICAgIH0sCisgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgIm1lbW9yeSI6ICJudW1iZXIi
LAorICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAieCI6IDAsCisgICAgICAgICJ5
IjogMCwKKyAgICAgICAgIndpZHRoIjogIm51bWJlciIsCisgICAgICAgICJoZWlnaHQiOiAibnVt
YmVyIgorICAgIH0sCisgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAg
ICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAg
ICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMi
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4Ijog
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAg
ICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAg
ICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0
IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxk
TGF5ZXJzIjogWworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVy
SWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICJtZW1v
cnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3Np
dGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJl
ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
d2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUw
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAg
ICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAg
ICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQi
OiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5
IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICJjb21w
b3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRo
IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJz
IjogW10KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBd
Cit9CisKKz09PSBNZXNzYWdlIHRoZSBwYWdlIHRvIGFkZCBhIG5ldyBjb21wb3NpdGVkIGxheWVy
ID09PQorCitQQVNTCisKKz09PSBHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUgPT09CisKK1BB
U1MKKworeworICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgImJvdW5kcyI6IHsKKyAgICAg
ICAgIngiOiAwLAorICAgICAgICAieSI6IDAsCisgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAor
ICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICB9LAorICAgICJpc0NvbXBvc2l0ZWQiOiB0
cnVlLAorICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsK
KyAgICAgICAgIngiOiAwLAorICAgICAgICAieSI6IDAsCisgICAgICAgICJ3aWR0aCI6ICJudW1i
ZXIiLAorICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICB9LAorICAgICJjaGlsZExheWVy
cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
ICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAg
ICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAi
aXNDb21wb3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAor
ICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAg
IngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6
IDEwMAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXNDb21w
b3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAi
eSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
Im1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNDb21w
b3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51
bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6
IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAg
ICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lk
dGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAg
ICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngi
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDEw
MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXll
cnMiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Ym91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6
ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJoZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJz
IjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAg
ICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAi
bnVtYmVyIgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXND
b21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIi
LAorICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIs
CisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQi
OiA1MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXNDb21w
b3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAor
ICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAg
ICAgICB9CisgICAgXQorfQorCis9PT0gT2J0YWluIHRoZSBub2RlIGlkIGZvciB0aGUgbmV3bHkg
aW5zZXJ0ZWQgbGF5ZXIgPT09CisKK1BBU1MKKworPT09IEdldCBhdHRyaWJ1dGVzIGZvciB0aGUg
bmV3bHkgaW5zZXJ0ZWQgbm9kZSA9PT0KKworUEFTUworCis9PT0gVGVzdCBjb21wbGV0ZSwgYWxs
IGV4cGVjdGVkIGNvbmRpdGlvbnMgbWV0ID09PQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTFiYzYyYjMzMjZhOGMxOWE1
NmE3MzVlYjJkYTNlZmEwMjgzYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApAQCAtMCwwICsxLDI1MCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gYWRkQ29tcG9z
aXRlZExheWVyKCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbXBvc2l0ZWQiOworICAgIGVsZW1l
bnQuaWQgPSAibGFzdC1lbGVtZW50IjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworfTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluaXRpYWxMYXllclRy
ZWU7CisgICAgdmFyIGV2ZW50c0NvdW50ID0gMDsKKworICAgIEluc3BlY3RvclRlc3QuZXZlbnRI
YW5kbGVyWyJMYXllclRyZWUubGF5ZXJUcmVlRGlkQ2hhbmdlIl0gPSBmdW5jdGlvbiAobWVzc2Fn
ZU9iamVjdCkgeworICAgICAgICBldmVudHNDb3VudCsrOworICAgIH07CisKKyAgICBnZXREb2N1
bWVudCgpOworICAgIAorICAgIGZ1bmN0aW9uIGdldERvY3VtZW50KCkKKyAgICB7CisgICAgICAg
IC8vIFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBkb2N1bWVudCBzbyB0aGF0IGxhdGVyIG9uIHdlIG1h
eSBnZXQgc2Vuc2libGUgbm9kZUlkcy4KKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1l
OiAiR2V0IHRoZSBEb2N1bWVudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLmdldERvY3Vt
ZW50IiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6
IGVuYWJsZUxheWVyVHJlZUFnZW50CisgICAgICAgIH0pOworICAgIH07CisgICAgCisgICAgZnVu
Y3Rpb24gZW5hYmxlTGF5ZXJUcmVlQWdlbnQocmVzdWx0KQorICAgIHsKKyAgICAgICAgc3RlcCh7
CisgICAgICAgICAgICBuYW1lOiAiRW5hYmxlIHRoZSBMYXllclRyZWUgYWdlbnQiLAorICAgICAg
ICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5lbmFibGUiLAorICAgICAgICAgICAgcGFyYW1ldGVy
czoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ2V0SW5pdGlhbExheWVyVHJlZQorICAgICAg
ICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ2V0SW5pdGlhbExheWVyVHJlZShyZXN1bHQp
CisgICAgeworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIGluaXRp
YWwgbGF5ZXIgdHJlZSIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmdldExheWVy
VHJlZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNr
OiBnb3RJbml0aWFsTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlv
biBnb3RJbml0aWFsTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIGluaXRpYWxMYXll
clRyZWUgPSByZXN1bHQubGF5ZXJUcmVlOworCisgICAgICAgIGR1bXBMYXllclRyZWUoaW5pdGlh
bExheWVyVHJlZSk7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiTWVzc2Fn
ZSB0aGUgcGFnZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllciIsCisgICAgICAgICAgICBj
b21tYW5kOiAiUnVudGltZS5ldmFsdWF0ZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ImV4
cHJlc3Npb24iOiAiYWRkQ29tcG9zaXRlZExheWVyKCkifSwKKyAgICAgICAgICAgIGNhbGxiYWNr
OiBnZXRNb2RpZmllZExheWVyVHJlZQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rp
b24gZ2V0TW9kaWZpZWRMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgc3RlcCh7Cisg
ICAgICAgICAgICBuYW1lOiAiR2V0IHRoZSBtb2RpZmllZCBsYXllciB0cmVlIiwKKyAgICAgICAg
ICAgIGNvbW1hbmQ6ICJMYXllclRyZWUuZ2V0TGF5ZXJUcmVlIiwKKyAgICAgICAgICAgIHBhcmFt
ZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE1vZGlmaWVkTGF5ZXJUcmVlCisg
ICAgICAgIH0pOworICAgIH07CisKKyAgICB2YXIgbGF5ZXJDb3VudCA9IDA7CisKKyAgICBmdW5j
dGlvbiBnb3RNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICBkdW1wTGF5
ZXJUcmVlKHJlc3VsdC5sYXllclRyZWUpOworCisgICAgICAgIHZhciBtdXRhdGlvbnMgPSBsYXll
clRyZWVNdXRhdGlvbnMoaW5pdGlhbExheWVyVHJlZSwgcmVzdWx0LmxheWVyVHJlZSk7CisgICAg
ICAgIHZhciBsYXN0SWQgPSBtdXRhdGlvbnMuYWRkaXRpb25zWzBdOworCisgICAgICAgIHN0ZXAo
eworICAgICAgICAgICAgbmFtZTogIk9idGFpbiB0aGUgbm9kZSBpZCBmb3IgdGhlIG5ld2x5IGlu
c2VydGVkIGxheWVyIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUubm9kZUlkRm9y
TGF5ZXJJZCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ImxheWVySWQiOiBsYXN0SWR9LAor
ICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE5vZGVJZEZvckxhc3RMYXllcgorICAgICAgICB9KTsK
KyAgICB9OworCisgICAgZnVuY3Rpb24gZ290Tm9kZUlkRm9yTGFzdExheWVyKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHZhciBpZCA9IHJlc3VsdC5ub2RlSWQ7CisgICAgICAgIHN0ZXAoeworICAg
ICAgICAgICAgbmFtZTogIkdldCBhdHRyaWJ1dGVzIGZvciB0aGUgbmV3bHkgaW5zZXJ0ZWQgbm9k
ZSIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLmdldEF0dHJpYnV0ZXMiLAorICAgICAgICAg
ICAgcGFyYW1ldGVyczogeyJub2RlSWQiOiBpZH0sCisgICAgICAgICAgICBjYWxsYmFjazogZ290
Tm9kZUF0dHJpYnV0ZXMKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdE5v
ZGVBdHRyaWJ1dGVzKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gYXR0
cmlidXRlc0RpY3Rpb25hcnlGcm9tQXJyYXkocmVzdWx0LmF0dHJpYnV0ZXMpOworICAgICAgICBp
ZiAoYXR0cmlidXRlcy5pZCAhPT0gImxhc3QtZWxlbWVudCIpCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiRkFJTDogRGlkIG5vdCBvYnRhaW4gdGhlIGV4cGVjdGVkIGVsZW1lbnQgZm9y
IHRoZSBsYXN0IGluc2VydGVkIGxheWVyLiIpOworCisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICB9OworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCisgICAgeworICAgICAgICBpZiAoIWV2
ZW50c0NvdW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IERpZCBub3Qg
cmVjZWl2ZSBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnRzLiIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG49PT0gVGVzdCBjb21wbGV0ZSwgYWxsIGV4cGVj
dGVkIGNvbmRpdGlvbnMgbWV0ID09PSIpOworCisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGxheWVyVHJlZU11dGF0aW9ucyhvbGRM
YXllclRyZWUsIG5ld0xheWVyVHJlZSkKKyAgICB7CisgICAgICAgIHZhciBvbGRLZXlzID0gT2Jq
ZWN0LmtleXMoZmxhdHRlbmVkTGF5ZXJUcmVlKG9sZExheWVyVHJlZSkpOworICAgICAgICB2YXIg
bmV3S2V5cyA9IE9iamVjdC5rZXlzKGZsYXR0ZW5lZExheWVyVHJlZShuZXdMYXllclRyZWUpKTsK
KworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgYWRkaXRpb25zOiBuZXdLZXlzLmZpbHRl
cihmdW5jdGlvbiAoa2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChvbGRLZXlzLmluZGV4
T2Yoa2V5KSA9PT0gLTEpOworICAgICAgICAgICAgfSksCisgICAgICAgICAgICByZW1vdmFsczog
b2xkS2V5cy5maWx0ZXIoZnVuY3Rpb24gKGtleSkgeworICAgICAgICAgICAgICAgIHJldHVybiAo
bmV3S2V5cy5pbmRleE9mKGtleSkgPT09IC0xKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgIH07
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGZsYXR0ZW5lZExheWVyVHJlZShsYXllclRyZWUpCisg
ICAgeworICAgICAgICB2YXIgbGF5ZXJCeUlkcyA9IHt9OworCisgICAgICAgIGZ1bmN0aW9uIHJl
Y3Vyc2UobGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxheWVyQnlJZHNbbGF5ZXIubGF5
ZXJJZF0gPSBsYXllcjsKKyAgICAgICAgICAgIGlmIChsYXllci5jaGlsZExheWVycykKKyAgICAg
ICAgICAgICAgICBsYXllci5jaGlsZExheWVycy5mb3JFYWNoKHJlY3Vyc2UpOworICAgICAgICB9
OworICAgICAgICAKKyAgICAgICAgcmVjdXJzZShsYXllclRyZWUpOworCisgICAgICAgIHJldHVy
biBsYXllckJ5SWRzOworICAgIH07CisKKyAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzRGljdGlvbmFy
eUZyb21BcnJheShhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgdmFyIGRpY3Rpb25hcnkgPSB7
fQorICAgICAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBhdHRyaWJ1dGVzLmxlbmd0aDsgaSA8
IGNvdW50OyBpICs9IDIpIHsKKyAgICAgICAgICAgIGRpY3Rpb25hcnlbYXR0cmlidXRlc1tpXV0g
PSBhdHRyaWJ1dGVzW2kgKyAxXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGljdGlvbmFy
eTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZHVtcExheWVyVHJlZShsYXllclRyZWUpCisgICAg
eworICAgICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoa2V5ID09PSAibGF5ZXJJZCIgfHwga2V5ID09PSAibWVtb3J5IikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHlwZW9mKHZhbHVlKTsKKworICAgICAgICAgICAgLy8gc29tZSB2
YWx1ZXMgZGlmZmVyIGJhc2VkIG9uIHBvcnQsIGJ1dCB0aGUgb25lcyB3ZSBtb3N0CisgICAgICAg
ICAgICAvLyBjYXJlIGFib3V0IHdpbGwgYWx3YXlzIGJlIGxlc3Mgb3IgZXF1YWwgMTAwLgorICAg
ICAgICAgICAgaWYgKChrZXkgPT09ICJ3aWR0aCIgfHwga2V5ID09PSAiaGVpZ2h0IikgJiYgdmFs
dWUgPiAxMDApIAorICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YodmFsdWUpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG4iICsgSlNPTi5zdHJpbmdpZnkobGF5ZXJUcmVl
LCByZXBsYWNlciwgIiAgICAiKSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgdGVzdC5uYW1lICsg
IiA9PT1cbiIpCisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQodGVzdC5jb21tYW5k
LCB0ZXN0LnBhcmFtZXRlcnMsIGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpIHsKKyAgICAgICAgICAg
IGlmIChtZXNzYWdlT2JqZWN0Lmhhc093blByb3BlcnR5KCJlcnJvciIpKSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLm1l
c3NhZ2UgKyAiICgiICsgbWVzc2FnZU9iamVjdC5lcnJvci5jb2RlICsgIikiKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBB
U1MiKTsKKyAgICAgICAgICAgIHRlc3QuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5yZXN1bHQpOwor
ICAgICAgICB9KTsKKyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7
CisKKzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIAorICAgIGRpdiB7
CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgdG9wOiAwOworICAgICAgICBs
ZWZ0OiAwOworICAgIH0KKyAgICAgIAorICAgIC5yZWd1bGFyIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBi
bGFjazsKKyAgICB9CisKKyAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIHRvcDogMjVweDsKKyAg
ICAgICAgbGVmdDogMjVweDsKKyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDog
NTBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgfQorICAgICAgCisgICAgLm9mZnNldCB7Cisg
ICAgICAgIGxlZnQ6IDIwMHB4OworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRl
WigwKTsKKyAgICB9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworICAgIDxkaXYgY2xh
c3M9InJlZ3VsYXIiPjwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRp
diBjbGFzcz0icmVndWxhciBvZmZzZXQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVk
Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MDIzYzhhNWJhMzQzNWI5M2JhNDQ3ZjNi
ODJhOTc2NTQyMzJjYWFhLi43Y2NjOGE1NTMxODZhOTIzMDk0N2U0NmFiNGE5MDBlYWU2YzE2MWVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTY4MCw2
ICsxNjgwLDkgQEAgd2Via2l0Lm9yZy9iLzEwMDg1NSBpZXRlc3RjZW50ZXIvY3NzMy90ZXh0L3Rl
eHRzaGFkb3ctMDA4Lmh0bSBbIEltYWdlT25seUZhaWx1cmUKIHdlYmtpdC5vcmcvYi8xMDA4NDYg
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXBhdXNlLWRlZGljYXRlZC13b3JrZXIuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzEwMDg0NiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIt
dGVybWluYXRlLWRlZGljYXRlZC13b3JrZXItd2hpbGUtcGF1c2VkLmh0bWwgWyBTa2lwIF0KIAor
IyBBQ0NFTEVSQVRFRF9DT01QT1NJVElORyBpcyByZXF1aXJlIGZvciBMYXllciB0cmVlIGluc3Bl
Y3Rpb24gdGVzdCB0byBwYXNzCit3ZWJraXQub3JnL2IvMTA0MzcyIGluc3BlY3Rvci1wcm90b2Nv
bC9sYXllci10cmVlLmh0bWwgWyBTa2lwIF0KKwogIyBOZXcgbWVkaWEgdGVzdCBpbnRyb2R1Y2Vk
IGluIHIxMzM2NjAgZmFpbHMuCiB3ZWJraXQub3JnL2IvMTAxNDM5IG1lZGlhL3Byb2dyZXNzLWV2
ZW50cy1nZW5lcmF0ZWQtY29ycmVjdGx5Lmh0bWwgWyBGYWlsdXJlIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178219</attachid>
            <date>2012-12-07 07:51:14 -0800</date>
            <delta_ts>2012-12-12 13:49:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103513-20121207164830.patch</filename>
            <type>text/plain</type>
            <size>61404</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRjYjc1NTQxYzlhYjU4
NTA0NWM5N2I5Mzc5YjExMTQ0ZDJmZGFjMS4uMTcxNGIwYjFmMjRlNGNlNTQzODg3YjY5YjZlY2Vl
OWY0ZTE2OTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTEyLTA1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSB0aGUgYmFj
a2VuZCBmb3IgZXhwb3NpbmcgdGhlIGxheWVyIHRyZWUgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzUxMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwdXJwb3Nl
IG9mIHRoaXMgcGF0Y2ggaXMgdG8gcHJvdmlkZSBhIG5ldyBhZ2VudCBlbmFibGluZyB0aGUgV2Vi
IEluc3BlY3RvciB0byBpbnRlcmZhY2UKKyAgICAgICAgd2l0aCBXZWJDb3JlIHRvIGFjY2VzcyBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgcmVuZGVyIGxheWVyIHRyZWUgYW5kLCBtb3JlIHNwZWNpZmlj
YWxseSwgZXhwb3NlCisgICAgICAgIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCBsYXllcnMgYmFj
a2VkIGJ5IHRleHR1cmVzIGNvbXBvc2l0ZWQgb24gdGhlIEdQVSBzdWNoIGFzIG1ldHJpY3MgYW5k
CisgICAgICAgIGJhY2tpbmcgc3RvcmUuIFRodXMgd2Ugbm93IHByb3ZpZGUgYSBMYXllclRyZWVB
Z2VudCB3aGljaCB3aWxsIGluZm9ybSB0aGUgZnJvbnQtZW5kIG9mIAorICAgICAgICBjaGFuZ2Vz
IHRvIHRoZSByZW5kZXIgbGF5ZXIgdHJlZSB2aWEgYSBuZXcgbGF5ZXJUcmVlRGlkQ2hhbmdlIGV2
ZW50LCBwcm92aWRpbmcgYW4gb2JqZWN0CisgICAgICAgIGNvbnRhaW5pbmcgdGhlIGVudGlyZSBo
aWVyYXJjaHkgb2YgUmVuZGVyTGF5ZXJzIGZvciB0aGUgaW5zcGVjdGVkIGRvY3VtZW50LiBUaGlz
IGhpZXJhcmNoeSAKKyAgICAgICAgY2FuIGJlIHF1ZXJpZWQgYXQgYW55IHRpbWUgdXNpbmcgdGhl
IC5nZXRMYXllclRyZWUoKSBtZXRob2Qgb24gdGhlIExheWVyVHJlZUFnZW50LiBGaW5hbGx5LCAK
KyAgICAgICAgdGhlIExheWVyVHJlZUFnZW50IGFsc28gZXhwb3NlcyBhIC5ub2RlSWRGb3JMYXll
cklkKCkgbWV0aG9kIGFsbG93aW5nIHRvIGdldCB0aGUgaWQgb2YgdGhlIAorICAgICAgICBub2Rl
IGFzc29jaWF0ZWQgd2l0aCB0aGUgUmVuZGVyTGF5ZXIgd2l0aCB0aGUgcHJvdmlkZWQgbGF5ZXIg
aWQuCisgICAgICAgIAorICAgICAgICBJbiB0ZXJtcyBvZiBpbXBsZW1lbnRhdGlvbiwgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yIGhhcyBiZWVuIGNoYW5nZWQgc3VjaCB0aGF0IGluIGl0cyAKKyAgICAg
ICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoKSBtZXRob2Qgd2UgY2FsbCB0aGUgbGF5ZXJUcmVl
RGlkQ2hhbmdlIG1ldGhvZCBvbiB0aGUgCisgICAgICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50
IGluc3RhbmNlIHZpYSB0aGUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLgorCisgICAgICAgIFRl
c3Q6IGluc3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLmh0bWwKKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjogRGVmaW5lIG5ldyB0
eXBlcyBJbnRSZWN0ICh4LCB5LCB3aWR0aCwgaGVpZ2h0KSBhbmQgTGF5ZXIsIHdoaWNoIAorICAg
ICAgICBob2xkcyB0aGUgaW5mb3JtYXRpb24gZm9yIGEgUmVuZGVyTGF5ZXIgKGxheWVySWQsIGJv
dW5kcywgaXNDb21wb3NpdGVkLCBtZW1vcnksIAorICAgICAgICBjb21wb3NpdGVkQm91bmRzKSBh
bmQgaXRzIGNoaWxkcmVuIChjaGlsZExheWVycykuIFdlIGFsc28gZGVmaW5lIHRoZSBtZXRob2Rz
IG9mIHRoZSAKKyAgICAgICAgTGF5ZXJUcmVlQWdlbnQgb2JqZWN0IChlbmFibGUsIGRpc2FibGUs
IGdldExheWVyVHJlZSwgbm9kZUlkRm9yTGF5ZXJJZCkgYW5kIHRoZSAKKyAgICAgICAgbGF5ZXJU
cmVlRGlkQ2hhbmdlIGV2ZW50IGl0ICAKKyAgICAgICAgZmlyZXMuCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlUGF0
aEZvclJlbmRlckxheWVyVG9Gcm9udGVuZCk6IE5ldyBtZXRob2QgZmFjaWxpdGF0aW5nIAorICAg
ICAgICBwdXNoaW5nIHRoZSBub2RlIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIFJlbmRlckxheWVy
IHRvIHRoZSBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDb21taXRMb2FkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxheWVyVHJlZURpZENoYW5nZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllclRyZWVBZ2VudFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50OjpJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6fklu
c3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpzZXRGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JM
YXllclRyZWVBZ2VudDo6cmVzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6
bGF5ZXJUcmVlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJl
ZUFnZW50OjpyZW5kZXJMYXllckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6Z2V0TGF5ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvclJvb3RMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6IEJ1
aWxkIHRoZSBlbnRpcmUgaGllcmFyY2h5IG9mIAorICAgICAgICBSZW5kZXJMYXllcnMgZnJvbSB0
aGUgcHJvdmlkZWQgUmVuZGVyTGF5ZXIuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXll
clRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JJbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckxheWVyVHJlZUFnZW50OjpiaW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50Ojp1bmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6Om5vZGVJZEZvckxheWVySWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JMYXllclRyZWVBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRp
bmdBZ2VudHMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1
bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGluZ0FnZW50cyk6CisgICAgICAgIChJbnN0cnVtZW50
aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6Omluc3Bl
Y3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6OnNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMpOiBDYWxsIHRoZSBsYXllclRyZWVEaWRD
aGFuZ2UgbWV0aG9kIAorICAgICAgICBvbiB0aGUgTGF5ZXJUcmVlQWdlbnQgdmlhIHRoZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24gdG8gaW5mb3JtIHRoZSBmcm9udC1lbmQgdGhhdCB0aGUgCisg
ICAgICAgIFJlbmRlckxheWVyIGhpZXJhcmNoeSBoYXMgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckJlY2Ft
ZU5vbkNvbXBvc2l0ZWQpOiBDYWxsIHRoZSByZW5kZXJMYXllckRlc3Ryb3llZCAKKyAgICAgICAg
bWV0aG9kIG9uIHRoZSBMYXllclRyZWVBZ2VudCB2aWEgdGhlIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbiB0byB1bmJpbmQgdGhlIGxheWVyIHRoYXQgaXMgCisgICAgICAgIGJlaW5nIGRlc3Ryb3ll
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAg
IChSZW5kZXJMYXllckNvbXBvc2l0b3IpOgorCiAyMDEyLTEyLTA0ICBNaWNoYWVsIFBydWV0dCAg
PG1pY2hhZWxANjhrLm9yZz4KIAogICAgICAgICBbSlNDXSBHZW5lcmF0ZSB2aXNpdENoaWxkcmVu
KCkgZm9yIHVuY3VzdG9taXplZCBFdmVudFRhcmdldCBpbnRlcmZhY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDk1MGEzNjA5YTdmYTBhOTBjNTUzOTU0ZDMzNmNkMjI3ODcxMGMwZTUuLmVjMjI0
YTI3ZDRlNzI3MWEzYjg1NWMwODRiNzM3MmFhNGI5NjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xNTk5LDYgKzE1OTksNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9y
L0luc3BlY3Rvckhpc3RvcnkuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IDVhZjdlZjU2MWMwN2ZkYjkyOGU4NDQ1M2IyYmU4ZmM3ZTQ3YzYw
NjAuLmI2ZDRiMWEyMWExMDY1NGZiZGUzOTk4NzA2ZDBjOGEzODZiZTRhNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzc0Miw2ICszNzQyLDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCAyOTkwMjFjOWUyZmMzNmVjMmFiYzhjNmRlNWQ0NWE4ZDIwOGE0NGRhLi44NjYzMDAyMTY0
MTgzZWZiZDBlNmQ2NmJhNmY1ZjZlOTNlOTk5OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTc3Myw2ICs3
NzMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3Rv
ckxheWVyVHJlZUFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIFwKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBcCkBAIC0xOTIxLDYgKzE5MjIsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JIaXN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmggXAog
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGRiZmZhNTQ3ZTlkZjBjMzU1MjdkMWFkNjc5ZTg1NjQ3ZTcyNDM3
MGYuLmIyMGU1Y2JmMmY1ZWQ5OTdhZDRlYzQzYzkzOWYwZWM2ZWVkNjM2YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI4ODIsNiArMjg4Miw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCcsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZTk5NDgwYzlkNDAxODI3Y2Ni
NDJkOWEyN2E4ZDZlNzRlOGU0NzEzOC4uMzMyMTk1MWNhMzJiODRhYzQ1MzMxY2QwZjE1NjRlYzVm
MmVmMWM2NCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTc1NDcwLDYgKzc1NDcwLDMwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3RvclxJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yTWVtb3J5QWdlbnQu
Y3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MGZlMzc4MzRmNzllNmNm
MWNjZDFhNTRjNWRlZGQyNGU5NDlhOGZiLi5kYTNiNTUzYjM2ZmRmMzcyMjM5ZmFmNDM5M2RlYzk4
MmZiZmMwNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xOTEwLDYgKzE5MTAsOCBAQAogCQk3MTkwNERFQTE1NkE2MzNBMDAx
RTFCQTUgLyogRE9NU1ZHVmlld1NwZWNJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE4NTEyMzMxNTY4NjQ5ODAw
QzQwOTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLzsgfTsKIAkJNzFBNTdERjExNTRC
RTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzFBNTdERUYxNTRCRTI1QzAwMDlEMTIwIC8qIFNW
R1BhdGhVdGlsaXRpZXMuY3BwICovOyB9OwogCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyog
U1ZHUGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCAq
LzsgfTsKKwkJNzFCMUUxMjUxNjQwNDhGNzAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUIx
RTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCAqLzsgfTsK
KwkJNzFCMUUxMjYxNjQwNDkxQTAwQjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQjFFMTIz
MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgKi87IH07CiAJ
CTcxQ0M3QTIwMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQ0M3QTFGMTUy
QTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcCAqLzsgfTsKIAkJNzFE
Q0I3MDExNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MURDQjZGRjE1NjgxOTc2MDA4NjIy
NzEgLyogSlNTVkdab29tQW5kUGFuLmNwcCAqLzsgfTsKIAkJNzFEQ0I3MDIxNTY4MTk3NjAwODYy
MjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzFEQ0I3MDAxNTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBh
bi5oICovOyB9OwpAQCAtOTE5Myw2ICs5MTk1LDggQEAKIAkJNzE4NTEyMzMxNTY4NjQ5ODAwQzQw
OTY3IC8qIERPTVNWR1ZpZXdTcGVjSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHVmll
d1NwZWNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUE1N0RFRjE1
NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzFBNTdERjAxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFV0aWxpdGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEg
LyogSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MUIxRTEyNDE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDQzdBMUYxNTJB
MEJGRTAwOUVFQUY5IC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRENCNkZGMTU2ODE5NzYwMDg2MjI3MSAvKiBKU1NW
R1pvb21BbmRQYW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
Vkdab29tQW5kUGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEQ0I3MDAx
NTY4MTk3NjAwODYyMjcxIC8qIEpTU1ZHWm9vbUFuZFBhbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1NWR1pvb21BbmRQYW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0ODI3LDYgKzE0ODMxLDggQEAKIAkJCQlBQTczMTgzQzE1OTI1NUI5MDBBOTNFNkUg
LyogSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUuY3BwICovLAogCQkJCUFBNzMxODNEMTU5MjU1
QjkwMEE5M0U2RSAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZS5oICovLAogCQkJCUFBOTAz
MEZFMTU3RTE2QTAwMDI3NjI0NyAvKiBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cyAqLywKKwkJCQk3MUIxRTEyMzE2NDA0OENDMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwICovLAorCQkJCTcxQjFFMTI0MTY0MDQ4Q0MwMEIxODgwQSAvKiBJbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oICovLAogCQkJCTdBMEU3NkY2MTBCRjA4RUQwMEEwMjc2RSAvKiBJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwICovLAogCQkJCTdBMEU3NkY3MTBCRjA4RUQwMEEwMjc2RSAvKiBJ
bmplY3RlZFNjcmlwdEhvc3QuaCAqLywKIAkJCQk3QTBFNzZGODEwQkYwOEVEMDBBMDI3NkUgLyog
SW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCAqLywKQEAgLTIzMzQ0LDYgKzIzMzUwLDcgQEAKIAkJCQk4
NTAyQUI1NDBBRDQzOEMwMDAzNzg1NDAgLyogRE9NU1ZHRkVGdW5jR0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MDJBQjk4MEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUZ1bmNHRWxl
bWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAyQUI1NjBBRDQzOEMwMDAzNzg1
NDAgLyogRE9NU1ZHRkVGdW5jUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxQjFFMTI1
MTY0MDQ4RjcwMEIxODgwQSAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODUwMkFCOTkwQUQ0Mzk0RTAwMzc4NTQwIC8qIERPTVNWR0ZFRnVuY1JFbGVtZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJBQjU4MEFENDM4QzAwMDM3ODU0MCAv
KiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDJB
QjlBMEFENDM5NEUwMDM3ODU0MCAvKiBET01TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjIwNSw2ICsyNjIxMiw3IEBACiAJCQlpc2EgPSBQQlhT
b3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQk3MUIxRTEyNjE2NDA0OTFBMDBCMTg4MEEgLyogSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCQzY5REExNTA1RjA3NjAwMUI3NEFD
IC8qIEFic3RyYWN0RGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFFMUIxRDAwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MjlDMTZFMTMwMEMyRTIwMDJENzk0RSAvKiBBY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNDU0
NTM5ZjY2YTlmYmQ1ZTJlM2UwYWI3Y2Y0NDJjNmY4NzQ2OTIxOC4uYWQyNTA1NTM5MTZhNDBmNjA4
ZjVjM2VlNWQwMWM4MGI3MjNmOWJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtMzI0Miw1ICszMjQyLDcyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIF0s
CiAgICAgICAgICJldmVudHMiOiBbXQorICAgIH0sCisgICAgeworICAgICAgICAiZG9tYWluIjog
IkxheWVyVHJlZSIsCisgICAgICAgICJoaWRkZW4iOiB0cnVlLAorICAgICAgICAidHlwZXMiOiBb
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkxheWVySWQiLAorICAgICAg
ICAgICAgICAgICJ0eXBlIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlVuaXF1ZSBSZW5kZXJMYXllciBpZGVudGlmaWVyLiIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkludFJlY3QiLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEg
cmVjdGFuZ2xlLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAieCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIHggcG9zaXRpb24uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInki
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlRoZSB5IHBvc2l0aW9uLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aWR0aCIsICJ0eXBlIjogImludGVnZXIi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIHdpZHRoIG1ldHJpYy4iIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiaGVpZ2h0IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgaGVpZ2h0IG1ldHJpYy4iIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJMYXllciIsCisgICAgICAg
ICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiSW5mb3JtYXRpb24gYWJvdXQgYSBjb21wb3NpdGluZyBsYXllci4iLAorICAgICAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImxheWVy
SWQiLCAiJHJlZiI6ICJMYXllcklkIiwgImRlc2NyaXB0aW9uIjogIlRoZSB1bmlxdWUgaWQgZm9y
IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdW5kcyIs
ICIkcmVmIjogIkludFJlY3QiLCAiZGVzY3JpcHRpb24iOiAiQm91bmRzIG9mIHRoZSBsYXllci4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaXNDb21wb3NpdGVkIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJbmRpY2F0ZXMgd2hldGhlciB0aGlzIGxheWVy
IGlzIGNvbXBvc2l0ZWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1lbW9y
eSIsICJ0eXBlIjogImludGVnZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
RXN0aW1hdGVkIG1lbW9yeSB1c2VkIGJ5IHRoaXMgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImNvbXBvc2l0ZWRCb3VuZHMiLCAiJHJlZiI6ICJJbnRSZWN0IiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBib3VuZHMgb2YgdGhlIGNvbXBvc2l0
ZWQgbGF5ZXIuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNoaWxkTGF5ZXJz
IiwgInR5cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjog
IkxheWVyIiB9LCAiZGVzY3JpcHRpb24iOiAiQ2hpbGQgbGF5ZXJzLiIgfQorICAgICAgICAgICAg
ICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImNvbW1hbmRzIjogWwor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkVuYWJsZXMgY29tcG9zaXRpbmcgdHJlZSBpbnNwZWN0
aW9uLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiZGlzYWJsZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVz
IGNvbXBvc2l0aW5nIHRyZWUgaW5zcGVjdGlvbi4iCisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImdldExheWVyVHJlZSIsCisgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIGxheWVyIHRyZWUgc3RydWN0dXJlIG9m
IHRoZSBjdXJyZW50IHBhZ2UuIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJsYXllclRyZWUiLCAiJHJlZiI6ICJMYXllciIsICJk
ZXNjcmlwdGlvbiI6ICJMYXllciB0cmVlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCBwYWdlLiIg
fQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAibm9kZUlkRm9yTGF5ZXJJZCIsCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIG5vZGUgaWQgZm9yIGEgZ2l2ZW4gbGF5ZXIgaWQu
IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJsYXllcklkIiwgIiRyZWYiOiAiTGF5ZXJJZCIgfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgbm9kZSBpZCBmb3IgdGhlIGdpdmVuIGxheWVyIGlkLiIgfQorICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgImV2ZW50cyI6IFsKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJsYXllclRyZWVEaWRDaGFuZ2UiCisgICAg
ICAgICAgICB9CisgICAgICAgIF0KICAgICB9XQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKaW5kZXggZDE5YWQyZTBhMDIzYjk5YTg2NDQ1Njdh
MzE0Zjc0YTFkZmY3MDcxZi4uMDMwMWIxY2NhZGE1MjUzZjBlOWFiZTVlOGIxODY5NjFmODBhOTBm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3Bw
CkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5jcHAiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAiCisjaW5jbHVkZSAiSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
IgogI2luY2x1ZGUgIkluc3BlY3Rvck1lbW9yeUFnZW50LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0
b3JPdmVybGF5LmNwcCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDIy
NGNhMTcwYjk2NDcwY2E5ZTc2MzdkOWQwNDk3ZmExZmUxMDhhOTQuLjc5YWQ4NmRiYjkyZTMyYzQ0
M2M5N2RlYWQwNTBiYzcyZjUwNWZmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckluZGV4ZWREQkFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JNZW1vcnlBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKQEAgLTE1MSw2ICsxNTIsOCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNw
ZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwog
CiAgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckNhbnZhc0FnZW50OjpjcmVhdGUobV9pbnN0
cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5nZXQoKSkpOwogCisgICAgbV9hZ2VudHMuYXBwZW5kKEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdl
dCgpLCBwYWdlKSk7CisKICAgICBBU1NFUlRfQVJHKGluc3BlY3RvckNsaWVudCwgaW5zcGVjdG9y
Q2xpZW50KTsKICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0
KCktPmluaXQobV9pbnNwZWN0b3JBZ2VudAogICAgICAgICAsIGNvbnNvbGVBZ2VudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOWI4ODkw
YWM2NjAyMWE5NDI5ZGI3NTk0NzdhZGIxY2E0MDMxZmRiNS4uZmUwMWU3M2Y0NWE2MDU0ZTQ3ZTA4
YjMwM2MyMGM0YWU5MWVlYTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC01NjMsNiArNTYzLDExIEBAIGludCBJbnNwZWN0b3JET01B
Z2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgIHJldHVy
biBtYXAtPmdldChub2RlVG9QdXNoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNo
Tm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRl
ckxheWVyKQoreworICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKHJlbmRlckxheWVy
LT5yZW5kZXJlcigpLT5ub2RlKCkpOworfQorCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmJvdW5k
Tm9kZUlkKE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5n
ZXQobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CmluZGV4IGY3Y2M1ZmIxOGFkMThmMTg5ZDk5NTI2OTNhYTU0ZTBkYjZiYWFlNjIuLjNjZmNlN2I2
M2U4YjFjZDEyYzIyNTI1N2Y2YjliM2E4MzRiMzg0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xOTksNiArMjAwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCiAg
ICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsg
fQorICAgIGludCBwdXNoTm9kZVBhdGhGb3JSZW5kZXJMYXllclRvRnJvbnRlbmQoY29uc3QgUmVu
ZGVyTGF5ZXIqKTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDBhY2Yz
MDM4YjZiZGQ1NDkzNmUwMGUyZDE0NjA4ZTgwMzliNjI4MzQuLmEzYTRjMTg5NWFiYmJmZjk5MzI0
YWU3OWMxMjI5OTI4YTVkMGQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5j
bHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oIgpAQCAtOTAwLDcgKzkwMSwxMCBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudAogICAgICAgICAgICAgZG9tU3RvcmFnZUFnZW50LT5jbGVhclJlc291cmNlcygpOwog
ICAgICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKICAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1
bWVudChtYWluRnJhbWUtPmRvY3VtZW50KCkpOwotCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgICAgICBpZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAg
ICAgICAgICAgIGxheWVyVHJlZUFnZW50LT5yZXNldCgpOworI2VuZGlmCiAgICAgICAgIGluc3Bl
Y3RvckFnZW50LT5kaWRDb21taXRMb2FkKCk7CiAgICAgfQogICAgIGlmIChJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2Vu
dCgpKQpAQCAtMTI4OCw2ICsxMjkyLDIwIEBAIERldmljZU9yaWVudGF0aW9uRGF0YSogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW9uSW1wbChJCiAgICAg
cmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVyVHJlZURpZENoYW5n
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPmxheWVyVHJlZURpZENoYW5nZSgpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlbmRlckxheWVyKiByZW5kZXJMYXllcikKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQqIGxheWVyVHJlZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKKyAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPnJlbmRlckxheWVyRGVzdHJveWVkKHJlbmRlckxheWVyKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBiYTQ0N2Y4ZDA2MzU1ZmRjZmRkOTI0NTg3OWQzYjhlN2VmOThkN2QyLi42ZjY3ZGRiOGY2
ZmFhY2EyYTRlOWQ3NjM5MGY4MDdjYjE1ZjU1NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBA
IGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgS1VSTDsKIGNsYXNzIE5vZGU7CitjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJl
bmRlck9iamVjdDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CkBAIC0yNzgsNiArMjc5LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEZXZpY2VPcmll
bnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24oUGFnZSosIERldmljZU9yaWVu
dGF0aW9uRGF0YSopOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHN0
YXRpYyB2b2lkIGxheWVyVHJlZURpZENoYW5nZShQYWdlKik7CisgICAgc3RhdGljIHZvaWQgcmVu
ZGVyTGF5ZXJEZXN0cm95ZWQoUGFnZSosIGNvbnN0IFJlbmRlckxheWVyKik7CisjZW5kaWYKKwog
cHJpdmF0ZToKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGRpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEZyYW1lKiwgRE9N
V3JhcHBlcldvcmxkKik7CkBAIC00NTUsNiArNDYxLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIHN0YXRpYyBEZXZpY2VPcmllbnRhdGlvbkRhdGEqIG92ZXJyaWRlRGV2aWNlT3JpZW50YXRp
b25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEZXZpY2VPcmllbnRhdGlvbkRhdGEqKTsKKwor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBzdGF0aWMgdm9pZCBsYXllclRy
ZWVEaWRDaGFuZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCBy
ZW5kZXJMYXllckRlc3Ryb3llZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFJlbmRl
ckxheWVyKik7CisjZW5kaWYKKwogICAgIHN0YXRpYyBpbnQgc19mcm9udGVuZENvdW50ZXI7CiAj
ZW5kaWYKIH07CkBAIC0xNTIwLDYgKzE1MzIsMjAgQEAgaW5saW5lIERldmljZU9yaWVudGF0aW9u
RGF0YSogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpvdmVycmlkZURldmljZU9yaWVudGF0aW8K
ICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmxheWVy
VHJlZURpZENoYW5nZShQYWdlKiBwYWdlKQoreworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSkp
CisgICAgICAgIGxheWVyVHJlZURpZENoYW5nZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0
cm95ZWQoUGFnZSogcGFnZSwgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyKQoreworICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvclBhZ2UocGFnZSkpCisgICAgICAgIHJlbmRlckxheWVyRGVzdHJveWVkSW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzLCByZW5kZXJMYXllcik7Cit9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bGxlY3RpbmdIVE1MUGFyc2VFcnJvcnMoUGFnZSogcGFnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVjYjVlOTI0MGExYWE2Y2MzMzUyYTNhNmQ4YzQyYjY5Nzg0MDRlNzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVyc0ZhY3RvcnkuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50
aW5nQWdlbnRzLmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgor
I2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5ZXJUcmVlQWdlbnRTdGF0
ZSB7CitzdGF0aWMgY29uc3QgY2hhciBsYXllclRyZWVBZ2VudEVuYWJsZWRbXSA9ICJsYXllclRy
ZWVBZ2VudEVuYWJsZWQiOworfTsKKworSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6Okluc3BlY3Rv
ckxheWVyVHJlZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgUGFnZSogcGFnZSkKKyAgICA6IEluc3BlY3RvckJhc2VB
Z2VudDxJbnNwZWN0b3JMYXllclRyZWVBZ2VudD4oIkxheWVyVHJlZSIsIGluc3RydW1lbnRpbmdB
Z2VudHMsIHN0YXRlKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250
ZW5kKDApCit7Cit9CisKK0luc3BlY3RvckxheWVyVHJlZUFnZW50Ojp+SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoKQoreworICAgIHJlc2V0KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKK3sKKyAgICBt
X2Zyb250ZW5kID0gZnJvbnRlbmQtPmxheWVydHJlZSgpOworfQorCit2b2lkIEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpjbGVhckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kID0gMDsKKyAg
ICBkaXNhYmxlKDApOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZXN0b3Jl
KCkKK3sKKyAgICBlbmFibGUoMCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OnJlc2V0KCkKK3sKKyAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLmNsZWFyKCk7CisgICAgbV9p
ZFRvTGF5ZXIuY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZW5h
YmxlKEVycm9yU3RyaW5nKikKK3sKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVyVHJlZUFn
ZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CisgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JMYXllclRyZWVBZ2VudCh0aGlzKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JMYXllclRyZWVBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCit7CisgICAgaWYg
KCFtX3N0YXRlLT5nZXRCb29sZWFuKExheWVyVHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50
RW5hYmxlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKExheWVy
VHJlZUFnZW50U3RhdGU6OmxheWVyVHJlZUFnZW50RW5hYmxlZCwgZmFsc2UpOworICAgIG1faW5z
dHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoMCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCit7CisgICAg
bV9mcm9udGVuZC0+bGF5ZXJUcmVlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OnJlbmRlckxheWVyRGVzdHJveWVkKGNvbnN0IFJlbmRlckxheWVyKiByZW5k
ZXJMYXllcikKK3sKKyAgICB1bmJpbmQocmVuZGVyTGF5ZXIpOworfQorCit2b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpnZXRMYXllclRyZWUoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+JiBvYmplY3QpCit7CisgICAgb2JqZWN0ID0gYnVpbGRP
YmplY3RGb3JSb290TGF5ZXIoKTsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJU
cmVlOjpMYXllcj4gSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUm9vdExh
eWVyKCkKK3sKKyAgICByZXR1cm4gYnVpbGRPYmplY3RGb3JMYXllcihtX2luc3BlY3RlZFBhZ2Ut
Pm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKS0+Y29tcG9zaXRvcigpLT5yb290UmVuZGVy
TGF5ZXIoKSk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+
IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckxheWVyKFJlbmRlckxheWVy
KiByZW5kZXJMYXllcikKK3sKKyAgICBib29sIGlzQ29tcG9zaXRlZCA9IHJlbmRlckxheWVyLT5p
c0NvbXBvc2l0ZWQoKTsKKworICAgIC8vIEJhc2ljIHNldCBvZiBwcm9wZXJ0aWVzLgorICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gbGF5ZXJPYmplY3QgPSBUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcjo6Y3JlYXRlKCkKKyAgICAgICAgLnNldExheWVySWQoYmlu
ZChyZW5kZXJMYXllcikpCisgICAgICAgIC5zZXRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0
KGVuY2xvc2luZ0ludFJlY3QocmVuZGVyTGF5ZXItPmxvY2FsQm91bmRpbmdCb3goKSkpKQorICAg
ICAgICAuc2V0SXNDb21wb3NpdGVkKGlzQ29tcG9zaXRlZCk7CisKKyAgICAvLyBPcHRpb25hbCBw
cm9wZXJ0aWVzIGZvciBjb21wb3NpdGVkIGxheWVycyBvbmx5LgorICAgIGlmIChpc0NvbXBvc2l0
ZWQpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nID0gcmVuZGVyTGF5ZXIt
PmJhY2tpbmcoKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldE1lbW9yeShiYWNraW5nLT5iYWNr
aW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpKTsKKyAgICAgICAgbGF5ZXJPYmplY3QtPnNldENvbXBv
c2l0ZWRCb3VuZHMoYnVpbGRPYmplY3RGb3JJbnRSZWN0KGJhY2tpbmctPmNvbXBvc2l0ZWRCb3Vu
ZHMoKSkpOworICAgIH0KKworICAgIC8vIFByb2Nlc3MgY2hpbGRyZW4gbGF5ZXJzLgorICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+ID4g
Y2hpbGRyZW5BcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVl
OjpMYXllcj46OmNyZWF0ZSgpOworCisgICAgcmVuZGVyTGF5ZXItPnVwZGF0ZUxheWVyTGlzdHNJ
Zk5lZWRlZCgpOworCisgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIHJlZmxlY3Rpb24gbGF5ZXIu
CisgICAgaWYgKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkKKyAgICAgICAgY2hpbGRy
ZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHJlbmRlckxheWVyLT5yZWZsZWN0
aW9uTGF5ZXIoKSkpOworCisgICAgaWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgp
KSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJl
bmRlckxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6
ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdFNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIobmVnWk9yZGVyTGlzdC0+YXQoaSkpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3Qg
PSByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSkgeworICAgICAgICBzaXplX3QgbGlzdFNp
emUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3RTaXplOyArK2kpCisgICAgICAgICAgICBjaGlsZHJlbkFycmF5LT5hZGRJdGVtKGJ1
aWxkT2JqZWN0Rm9yTGF5ZXIobm9ybWFsRmxvd0xpc3QtPmF0KGkpKSk7CisgICAgfQorICAgIAor
ICAgIGlmIChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSByZW5kZXJMYXllci0+cG9zWk9y
ZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0
LT5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyAr
K2kpCisgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZv
ckxheWVyKHBvc1pPcmRlckxpc3QtPmF0KGkpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
YXllck9iamVjdC0+c2V0Q2hpbGRMYXllcnMoY2hpbGRyZW5BcnJheSk7CisgICAgCisgICAgcmV0
dXJuIGxheWVyT2JqZWN0OworfQorCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkludFJlY3Q+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWlsZE9iamVjdEZvckludFJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gVHlwZUJ1aWxkZXI6OkxheWVyVHJl
ZTo6SW50UmVjdDo6Y3JlYXRlKCkKKyAgICAgICAgLnNldFgocmVjdC54KCkpCisgICAgICAgIC5z
ZXRZKHJlY3QueSgpKQorICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0aCgpKQorICAgICAgICAu
c2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpLnJlbGVhc2UoKTsKK30KKworU3RyaW5nIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpiaW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKK3sKKyAgICBp
ZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gIiI7CisgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBt
X2RvY3VtZW50TGF5ZXJUb0lkTWFwLmdldChsYXllcik7CisgICAgaWYgKGlkZW50aWZpZXIuaXNO
dWxsKCkpIHsKKyAgICAgICAgaWRlbnRpZmllciA9IElkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRl
SWRlbnRpZmllcigpOworICAgICAgICBtX2RvY3VtZW50TGF5ZXJUb0lkTWFwLnNldChsYXllciwg
aWRlbnRpZmllcik7CisgICAgICAgIG1faWRUb0xheWVyLnNldChpZGVudGlmaWVyLCBsYXllcik7
CisgICAgfQorICAgIHJldHVybiBpZGVudGlmaWVyOworfQorCit2b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50Ojp1bmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQoreworICAgIFN0cmlu
ZyBpZGVudGlmaWVyID0gbV9kb2N1bWVudExheWVyVG9JZE1hcC5nZXQobGF5ZXIpOworICAgIGlm
IChpZGVudGlmaWVyLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50
TGF5ZXJUb0lkTWFwLnJlbW92ZShsYXllcik7CisgICAgbV9pZFRvTGF5ZXIucmVtb3ZlKGlkZW50
aWZpZXIpOworfQorCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpub2RlSWRGb3JMYXll
cklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBsYXllcklkLCBpbnQq
IHJlc3VsdE5vZGVJZCkKK3sKKyAgICAvLyBPYnRhaW4gdGhlIFJlbmRlckxheWVyIGZyb20gdGhl
IGlkZW50aWZpZXIgcHJvdmlkZWQuCisgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVy
ID0gbV9pZFRvTGF5ZXIuZ2V0KGxheWVySWQpOworICAgIAorICAgIC8vIFNlbmQgYW4gZXJyb3Ig
aWYgdGhlcmUgaXMgbm8gc3VjaCByZWdpc3RlcmVkIGxheWVyIGlkLgorICAgIGlmICghcmVuZGVy
TGF5ZXIpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBmaW5kIGEgYm91bmQg
bGF5ZXIgZm9yIHRoZSBwcm92aWRlZCBpZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgLy8gR2V0IHRoZSBub2RlIGlkIGZyb20gdGhlIERPTSBhZ2VudCBhbmQgcmV0dXJuIGl0
IHRvIHRoZSBmcm9udC1lbmQuCisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGluc3BlY3RvckRPTUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpOworICAgICpy
ZXN1bHROb2RlSWQgPSBpbnNwZWN0b3JET01BZ2VudC0+cHVzaE5vZGVQYXRoRm9yUmVuZGVyTGF5
ZXJUb0Zyb250ZW5kKHJlbmRlckxheWVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MTFiODY1MjA4ZmFjNDA1NmY3NWNhYjdjY2Uy
MTkzZmQyZTJiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluc3Bl
Y3RvckxheWVyVHJlZUFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnRfaAor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckJhc2VBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVHlw
ZUJ1aWxkZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSW5zcGVjdG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OworY2xhc3MgUGFnZTsKKwordHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIElu
c3BlY3RvckxheWVyVHJlZUFnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNwZWN0
b3JMYXllclRyZWVBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6TGF5
ZXJUcmVlQ29tbWFuZEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
c3BlY3RvckxheWVyVHJlZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBQYWdlKiBwYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JMYXllclRyZWVBZ2VudChpbnN0
cnVtZW50aW5nQWdlbnRzLCBzdGF0ZSwgcGFnZSkpOworICAgIH0KKyAgICB+SW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JG
cm9udGVuZCopOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyb250ZW5kKCk7CisgICAgdmlydHVh
bCB2b2lkIHJlc3RvcmUoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICB2b2lkIGxheWVyVHJl
ZURpZENoYW5nZSgpOworICAgIHZvaWQgcmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVy
TGF5ZXIqKTsKKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCisgICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGdldExheWVyVHJlZShFcnJvclN0cmluZyos
IFJlZlB0cjxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbm9kZUlkRm9yTGF5ZXJJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbGF5ZXJJZCwg
aW50KiByZXN1bHROb2RlSWQpOworCitwcml2YXRlOgorICAgIEluc3BlY3RvckxheWVyVHJlZUFn
ZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqKTsKKworICAg
IC8vIFJlbmRlckxheWVyLXJlbGF0ZWQgbWV0aG9kcy4KKyAgICBTdHJpbmcgYmluZChjb25zdCBS
ZW5kZXJMYXllciopOworICAgIHZvaWQgdW5iaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CisKKyAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9iamVjdEZv
clJvb3RMYXllcigpOyAgIAorICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6
TGF5ZXI+IGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIAorICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKKyAg
ICBJbnNwZWN0b3JGcm9udGVuZDo6TGF5ZXJUcmVlKiBtX2Zyb250ZW5kOworCisgICAgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIFN0cmluZz4gbV9kb2N1bWVudExheWVyVG9JZE1hcDsKKyAg
ICBIYXNoTWFwPFN0cmluZywgY29uc3QgUmVuZGVyTGF5ZXIqPiBtX2lkVG9MYXllcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JMYXllclRyZWVBZ2VudF9oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggODg0ZDliYjEx
NmY5NDMxM2MyYjI4N2JlYjc4ZWU5ZDcyZTE3YjQ1Zi4uN2UyNzA5ZjcyZWM4YzdmZWIzMzE3MGIz
ZWUwMjM4NWExZWM2YTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1
bWVudGluZ0FnZW50cy5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50OworY2xhc3MgSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JQcm9maWxlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDsKQEAg
LTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1faW5zcGVjdG9yQWdlbnQoMCkKICAg
ICAgICAgLCBtX2luc3BlY3RvclBhZ2VBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yQ1NT
QWdlbnQoMCkKKyAgICAgICAgLCBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50KDApCiAgICAgICAg
ICwgbV9pbnNwZWN0b3JDb25zb2xlQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvckRPTUFn
ZW50KDApCiAgICAgICAgICwgbV9pbnNwZWN0b3JSZXNvdXJjZUFnZW50KDApCkBAIC0xNTMsMTAg
KzE1NSwxOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGluc3BlY3RvckNh
bnZhc0FnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JDYW52YXNBZ2VudDsgfQogICAg
IHZvaWQgc2V0SW5zcGVjdG9yQ2FudmFzQWdlbnQoSW5zcGVjdG9yQ2FudmFzQWdlbnQqIGFnZW50
KSB7IG1faW5zcGVjdG9yQ2FudmFzQWdlbnQgPSBhZ2VudDsgfQogCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBpbnNwZWN0b3JM
YXllclRyZWVBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ7
IH0KKyAgICB2b2lkIHNldEluc3BlY3RvckxheWVyVHJlZUFnZW50KEluc3BlY3RvckxheWVyVHJl
ZUFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckxheWVyVHJlZUFnZW50ID0gYWdlbnQ7IH0KKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50Owog
ICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9pbnNwZWN0b3JQYWdlQWdlbnQ7CiAgICAgSW5zcGVj
dG9yQ1NTQWdlbnQqIG1faW5zcGVjdG9yQ1NTQWdlbnQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBtX2luc3BlY3RvckxheWVy
VHJlZUFnZW50OworI2VuZGlmCiAgICAgSW5zcGVjdG9yQ29uc29sZUFnZW50KiBtX2luc3BlY3Rv
ckNvbnNvbGVBZ2VudDsKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2Vu
dDsKICAgICBJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiBtX2luc3BlY3RvclJlc291cmNlQWdlbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDU2MWViMjhhNmQ5YzhiMThmYmU5MTQwNmNjZDNkMzhmMjRjYWE3NzAuLmEwYWM1
YTE0YzUxNGE1MzUxMjU1NTdmODEyZTZhMjA2ZWVjZmRlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXBwbGV0LmgiCkBAIC01MDgsNiArNTA5LDE4IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0
ZVR5cGUgdXBkYXRlCiAKICAgICBpZiAoIWhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSkKICAg
ICAgICAgZW5hYmxlQ29tcG9zaXRpbmdNb2RlKGZhbHNlKTsKKworICAgIC8vIEluZm9ybSB0aGUg
aW5zcGVjdG9yIHRoYXQgdGhlIGxheWVyIHRyZWUgaGFzIGNoYW5nZWQuCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UocGFnZSgpKTsKK30KKwordm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIpCit7CisgICAgLy8gSW5mb3JtIHRoZSBpbnNwZWN0b3IgdGhh
dCB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgd2FzIGRlc3Ryb3llZC4KKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkKHBhZ2UoKSwgcmVuZGVyTGF5ZXIpOwor
CisgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKKyAgICAtLW1fY29tcG9z
aXRlZExheWVyQ291bnQ7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNTE5MzQxMWEyZDcx
MGU3OWUyMzhmNTEwYmY3NGFlMGU2YTFmZGNhMS4uZTg5ZWM3OWQyYTE0MjM5YzFlOGRhZjdkYzQy
MjY0NWRlYzg2NzkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuaApAQCAtMTcwLDExICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckJhY2tpbmdGb3JBbGxMYXllcnMoKTsKICAgICAKICAgICB2b2lkIGxheWVyQmVjYW1lQ29t
cG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopIHsgKyttX2NvbXBvc2l0ZWRMYXllckNvdW50OyB9
Ci0gICAgdm9pZCBsYXllckJlY2FtZU5vbkNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAwKTsKLSAgICAg
ICAgLS1tX2NvbXBvc2l0ZWRMYXllckNvdW50OwotICAgIH0KKyAgICB2b2lkIGxheWVyQmVjYW1l
Tm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciopOwogICAgIAogI2lmIEVOQUJMRShWSURF
TykKICAgICAvLyBVc2UgYnkgUmVuZGVyVmlkZW8gdG8gYXNrIGlmIGl0IHNob3VsZCB0cnkgdG8g
dXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNlYTdjOTYzZWI3MmFjMDJhMjBm
NTU2ZDM2MGYwNTgyNTFkYWJiZTIuLjNhMzhjNmFmNDJkNjExNzExN2QzMGQ5OTE1YTE5OGY4NDg3
YjU2ZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMi0wNSAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgdGhlIGJhY2tlbmQgZm9yIGV4
cG9zaW5nIHRoZSBsYXllciB0cmVlIHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM1MTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBMYXlvdXRUZXN0IHRo
YXQgZXhlcmNpc2VzIHRoZSB2YXJpb3VzIEFQSXMgYW5kIGV2ZW50IGV4cG9zZWQgYnkgdGhlIExh
eWVyVHJlZUFnZW50LgorICAgICAgICBUaGlzIHRlc3QgaXMgc2tpcHBlZCBvbiBFRkwgd2hlcmUg
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcgaXMgbm90IGF2YWlsYWJsZS4KKworICAgICAgICAqIGlu
c3BlY3Rvci1wcm90b2NvbC9sYXllci10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMTItMDQgIEp1c3NpIEt1a2tv
bmVuICA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogCiAgICAgICAgIE1ha2Ugc3ZnL2RvbS92
aWV3c3BlYy1wYXJzZXItKi5odG1sIG5vbi1mbGFreQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
YTc1ZmU3Yzc4MmQ4NzhhMTljMmFmOGRkMTliZjExMDU0YjZlOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzNjMgQEAKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09CisKK1BBU1MKKwor
PT09IEVuYWJsZSB0aGUgTGF5ZXJUcmVlIGFnZW50ID09PQorCitQQVNTCisKKz09PSBHZXQgdGhl
IGluaXRpYWwgbGF5ZXIgdHJlZSA9PT0KKworUEFTUworCit7CisgICAgImxheWVySWQiOiAic3Ry
aW5nIiwKKyAgICAiYm91bmRzIjogeworICAgICAgICAieCI6IDAsCisgICAgICAgICJ5IjogMCwK
KyAgICAgICAgIndpZHRoIjogIm51bWJlciIsCisgICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgor
ICAgIH0sCisgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgIm1lbW9yeSI6ICJudW1iZXIi
LAorICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAieCI6IDAsCisgICAgICAgICJ5
IjogMCwKKyAgICAgICAgIndpZHRoIjogIm51bWJlciIsCisgICAgICAgICJoZWlnaHQiOiAibnVt
YmVyIgorICAgIH0sCisgICAgImNoaWxkTGF5ZXJzIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAibGF5ZXJJZCI6ICJzdHJpbmciLAorICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAg
ICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICJoZWlnaHQiOiAibnVtYmVyIgor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAg
ICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMi
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4Ijog
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAg
ICAgICAgICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAg
ICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0
IjogNTAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxk
TGF5ZXJzIjogWworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogNTAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImxheWVy
SWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDEwMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJoZWlnaHQiOiAxMDAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICJtZW1v
cnkiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiAxMDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3Np
dGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJl
ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
d2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUw
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAg
ICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgi
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDAKKyAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAg
ICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQi
OiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBv
c2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5kcyI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5
IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICJjb21w
b3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRo
IjogIm51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIK
KyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJz
IjogW10KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBd
Cit9CisKKz09PSBNZXNzYWdlIHRoZSBwYWdlIHRvIGFkZCBhIG5ldyBjb21wb3NpdGVkIGxheWVy
ID09PQorCitQQVNTCisKKz09PSBHZXQgdGhlIG1vZGlmaWVkIGxheWVyIHRyZWUgPT09CisKK1BB
U1MKKworeworICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgImJvdW5kcyI6IHsKKyAgICAg
ICAgIngiOiAwLAorICAgICAgICAieSI6IDAsCisgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAor
ICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICB9LAorICAgICJpc0NvbXBvc2l0ZWQiOiB0
cnVlLAorICAgICJtZW1vcnkiOiAibnVtYmVyIiwKKyAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsK
KyAgICAgICAgIngiOiAwLAorICAgICAgICAieSI6IDAsCisgICAgICAgICJ3aWR0aCI6ICJudW1i
ZXIiLAorICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICB9LAorICAgICJjaGlsZExheWVy
cyI6IFsKKyAgICAgICAgeworICAgICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAg
ICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAg
ICAgICAgICAiaGVpZ2h0IjogIm51bWJlciIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAi
aXNDb21wb3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgICAiY2hpbGRMYXllcnMiOiBbCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmciLAor
ICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAg
IngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6
IDEwMAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXNDb21w
b3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAi
eSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
Im1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6ICJzdHJpbmci
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiOiA1MCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDUwCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXNDb21w
b3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51
bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvc2l0ZWRCb3VuZHMiOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6
IDUwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiY2hpbGRMYXllcnMiOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAgICAgICAg
ICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAid2lk
dGgiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMTAwCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJpc0NvbXBvc2l0ZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgICAibWVtb3J5IjogIm51bWJlciIsCisgICAgICAgICAgICAg
ICAgICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgIngi
OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIndpZHRoIjogMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCI6IDEw
MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiY2hpbGRMYXll
cnMiOiBbCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Ym91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImlzQ29tcG9zaXRlZCI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjb21wb3NpdGVkQm91bmRzIjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogNTAsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJoZWlnaHQiOiA1MAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJzIjogW10KKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibGF5ZXJJZCI6
ICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiYm91bmRzIjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgIngiOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgInkiOiAwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZHRoIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICJoZWlnaHQiOiAwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICJpc0NvbXBvc2l0ZWQiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgImNoaWxkTGF5ZXJz
IjogW10KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgImxheWVySWQiOiAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImJvdW5k
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICJ5IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogMAorICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICAiaXNDb21wb3NpdGVkIjogZmFsc2UsCisgICAgICAgICAgICAg
ICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIsCisgICAgICAg
ICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAieCI6IDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiAibnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiAi
bnVtYmVyIgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXND
b21wb3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIi
LAorICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6ICJudW1iZXIiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImhlaWdodCI6ICJudW1iZXIiCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJsYXllcklkIjogInN0cmluZyIs
CisgICAgICAgICAgICAgICAgICAgICJib3VuZHMiOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAieCI6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAieSI6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAid2lkdGgiOiA1MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQi
OiA1MAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiaXNDb21w
b3NpdGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSI6ICJudW1iZXIiLAor
ICAgICAgICAgICAgICAgICAgICAiY29tcG9zaXRlZEJvdW5kcyI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJ4IjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ5IjogMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJ3aWR0aCI6IDUwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ImhlaWdodCI6IDUwCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAg
ICJjaGlsZExheWVycyI6IFtdCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAg
ICAgICB9CisgICAgXQorfQorCis9PT0gT2J0YWluIHRoZSBub2RlIGlkIGZvciB0aGUgbmV3bHkg
aW5zZXJ0ZWQgbGF5ZXIgPT09CisKK1BBU1MKKworPT09IEdldCBhdHRyaWJ1dGVzIGZvciB0aGUg
bmV3bHkgaW5zZXJ0ZWQgbm9kZSA9PT0KKworUEFTUworCis9PT0gVGVzdCBjb21wbGV0ZSwgYWxs
IGV4cGVjdGVkIGNvbmRpdGlvbnMgbWV0ID09PQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3ItcHJvdG9jb2wvbGF5ZXItdHJlZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTFiYzYyYjMzMjZhOGMxOWE1
NmE3MzVlYjJkYTNlZmEwMjgzYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbApAQCAtMCwwICsxLDI1MCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2h0dHAvdGVz
dHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gYWRkQ29tcG9z
aXRlZExheWVyKCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbXBvc2l0ZWQiOworICAgIGVsZW1l
bnQuaWQgPSAibGFzdC1lbGVtZW50IjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworfTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGluaXRpYWxMYXllclRy
ZWU7CisgICAgdmFyIGV2ZW50c0NvdW50ID0gMDsKKworICAgIEluc3BlY3RvclRlc3QuZXZlbnRI
YW5kbGVyWyJMYXllclRyZWUubGF5ZXJUcmVlRGlkQ2hhbmdlIl0gPSBmdW5jdGlvbiAobWVzc2Fn
ZU9iamVjdCkgeworICAgICAgICBldmVudHNDb3VudCsrOworICAgIH07CisKKyAgICBnZXREb2N1
bWVudCgpOworICAgIAorICAgIGZ1bmN0aW9uIGdldERvY3VtZW50KCkKKyAgICB7CisgICAgICAg
IC8vIFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBkb2N1bWVudCBzbyB0aGF0IGxhdGVyIG9uIHdlIG1h
eSBnZXQgc2Vuc2libGUgbm9kZUlkcy4KKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1l
OiAiR2V0IHRoZSBEb2N1bWVudCIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLmdldERvY3Vt
ZW50IiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6
IGVuYWJsZUxheWVyVHJlZUFnZW50CisgICAgICAgIH0pOworICAgIH07CisgICAgCisgICAgZnVu
Y3Rpb24gZW5hYmxlTGF5ZXJUcmVlQWdlbnQocmVzdWx0KQorICAgIHsKKyAgICAgICAgc3RlcCh7
CisgICAgICAgICAgICBuYW1lOiAiRW5hYmxlIHRoZSBMYXllclRyZWUgYWdlbnQiLAorICAgICAg
ICAgICAgY29tbWFuZDogIkxheWVyVHJlZS5lbmFibGUiLAorICAgICAgICAgICAgcGFyYW1ldGVy
czoge30sCisgICAgICAgICAgICBjYWxsYmFjazogZ2V0SW5pdGlhbExheWVyVHJlZQorICAgICAg
ICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ2V0SW5pdGlhbExheWVyVHJlZShyZXN1bHQp
CisgICAgeworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIGluaXRp
YWwgbGF5ZXIgdHJlZSIsCisgICAgICAgICAgICBjb21tYW5kOiAiTGF5ZXJUcmVlLmdldExheWVy
VHJlZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAgIGNhbGxiYWNr
OiBnb3RJbml0aWFsTGF5ZXJUcmVlCisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlv
biBnb3RJbml0aWFsTGF5ZXJUcmVlKHJlc3VsdCkKKyAgICB7CisgICAgICAgIGluaXRpYWxMYXll
clRyZWUgPSByZXN1bHQubGF5ZXJUcmVlOworCisgICAgICAgIGR1bXBMYXllclRyZWUoaW5pdGlh
bExheWVyVHJlZSk7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiTWVzc2Fn
ZSB0aGUgcGFnZSB0byBhZGQgYSBuZXcgY29tcG9zaXRlZCBsYXllciIsCisgICAgICAgICAgICBj
b21tYW5kOiAiUnVudGltZS5ldmFsdWF0ZSIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ImV4
cHJlc3Npb24iOiAiYWRkQ29tcG9zaXRlZExheWVyKCkifSwKKyAgICAgICAgICAgIGNhbGxiYWNr
OiBnZXRNb2RpZmllZExheWVyVHJlZQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rp
b24gZ2V0TW9kaWZpZWRMYXllclRyZWUocmVzdWx0KQorICAgIHsKKyAgICAgICAgc3RlcCh7Cisg
ICAgICAgICAgICBuYW1lOiAiR2V0IHRoZSBtb2RpZmllZCBsYXllciB0cmVlIiwKKyAgICAgICAg
ICAgIGNvbW1hbmQ6ICJMYXllclRyZWUuZ2V0TGF5ZXJUcmVlIiwKKyAgICAgICAgICAgIHBhcmFt
ZXRlcnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE1vZGlmaWVkTGF5ZXJUcmVlCisg
ICAgICAgIH0pOworICAgIH07CisKKyAgICB2YXIgbGF5ZXJDb3VudCA9IDA7CisKKyAgICBmdW5j
dGlvbiBnb3RNb2RpZmllZExheWVyVHJlZShyZXN1bHQpCisgICAgeworICAgICAgICBkdW1wTGF5
ZXJUcmVlKHJlc3VsdC5sYXllclRyZWUpOworCisgICAgICAgIHZhciBtdXRhdGlvbnMgPSBsYXll
clRyZWVNdXRhdGlvbnMoaW5pdGlhbExheWVyVHJlZSwgcmVzdWx0LmxheWVyVHJlZSk7CisgICAg
ICAgIHZhciBsYXN0SWQgPSBtdXRhdGlvbnMuYWRkaXRpb25zWzBdOworCisgICAgICAgIHN0ZXAo
eworICAgICAgICAgICAgbmFtZTogIk9idGFpbiB0aGUgbm9kZSBpZCBmb3IgdGhlIG5ld2x5IGlu
c2VydGVkIGxheWVyIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJMYXllclRyZWUubm9kZUlkRm9y
TGF5ZXJJZCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7ImxheWVySWQiOiBsYXN0SWR9LAor
ICAgICAgICAgICAgY2FsbGJhY2s6IGdvdE5vZGVJZEZvckxhc3RMYXllcgorICAgICAgICB9KTsK
KyAgICB9OworCisgICAgZnVuY3Rpb24gZ290Tm9kZUlkRm9yTGFzdExheWVyKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHZhciBpZCA9IHJlc3VsdC5ub2RlSWQ7CisgICAgICAgIHN0ZXAoeworICAg
ICAgICAgICAgbmFtZTogIkdldCBhdHRyaWJ1dGVzIGZvciB0aGUgbmV3bHkgaW5zZXJ0ZWQgbm9k
ZSIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLmdldEF0dHJpYnV0ZXMiLAorICAgICAgICAg
ICAgcGFyYW1ldGVyczogeyJub2RlSWQiOiBpZH0sCisgICAgICAgICAgICBjYWxsYmFjazogZ290
Tm9kZUF0dHJpYnV0ZXMKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdE5v
ZGVBdHRyaWJ1dGVzKHJlc3VsdCkKKyAgICB7CisgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gYXR0
cmlidXRlc0RpY3Rpb25hcnlGcm9tQXJyYXkocmVzdWx0LmF0dHJpYnV0ZXMpOworICAgICAgICBp
ZiAoYXR0cmlidXRlcy5pZCAhPT0gImxhc3QtZWxlbWVudCIpCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiRkFJTDogRGlkIG5vdCBvYnRhaW4gdGhlIGV4cGVjdGVkIGVsZW1lbnQgZm9y
IHRoZSBsYXN0IGluc2VydGVkIGxheWVyLiIpOworCisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICB9OworCisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCisgICAgeworICAgICAgICBpZiAoIWV2
ZW50c0NvdW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IERpZCBub3Qg
cmVjZWl2ZSBsYXllclRyZWVEaWRDaGFuZ2UgZXZlbnRzLiIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG49PT0gVGVzdCBjb21wbGV0ZSwgYWxsIGV4cGVj
dGVkIGNvbmRpdGlvbnMgbWV0ID09PSIpOworCisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGxheWVyVHJlZU11dGF0aW9ucyhvbGRM
YXllclRyZWUsIG5ld0xheWVyVHJlZSkKKyAgICB7CisgICAgICAgIHZhciBvbGRLZXlzID0gT2Jq
ZWN0LmtleXMoZmxhdHRlbmVkTGF5ZXJUcmVlKG9sZExheWVyVHJlZSkpOworICAgICAgICB2YXIg
bmV3S2V5cyA9IE9iamVjdC5rZXlzKGZsYXR0ZW5lZExheWVyVHJlZShuZXdMYXllclRyZWUpKTsK
KworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgYWRkaXRpb25zOiBuZXdLZXlzLmZpbHRl
cihmdW5jdGlvbiAoa2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChvbGRLZXlzLmluZGV4
T2Yoa2V5KSA9PT0gLTEpOworICAgICAgICAgICAgfSksCisgICAgICAgICAgICByZW1vdmFsczog
b2xkS2V5cy5maWx0ZXIoZnVuY3Rpb24gKGtleSkgeworICAgICAgICAgICAgICAgIHJldHVybiAo
bmV3S2V5cy5pbmRleE9mKGtleSkgPT09IC0xKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgIH07
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGZsYXR0ZW5lZExheWVyVHJlZShsYXllclRyZWUpCisg
ICAgeworICAgICAgICB2YXIgbGF5ZXJCeUlkcyA9IHt9OworCisgICAgICAgIGZ1bmN0aW9uIHJl
Y3Vyc2UobGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxheWVyQnlJZHNbbGF5ZXIubGF5
ZXJJZF0gPSBsYXllcjsKKyAgICAgICAgICAgIGlmIChsYXllci5jaGlsZExheWVycykKKyAgICAg
ICAgICAgICAgICBsYXllci5jaGlsZExheWVycy5mb3JFYWNoKHJlY3Vyc2UpOworICAgICAgICB9
OworICAgICAgICAKKyAgICAgICAgcmVjdXJzZShsYXllclRyZWUpOworCisgICAgICAgIHJldHVy
biBsYXllckJ5SWRzOworICAgIH07CisKKyAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzRGljdGlvbmFy
eUZyb21BcnJheShhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgdmFyIGRpY3Rpb25hcnkgPSB7
fQorICAgICAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBhdHRyaWJ1dGVzLmxlbmd0aDsgaSA8
IGNvdW50OyBpICs9IDIpIHsKKyAgICAgICAgICAgIGRpY3Rpb25hcnlbYXR0cmlidXRlc1tpXV0g
PSBhdHRyaWJ1dGVzW2kgKyAxXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGljdGlvbmFy
eTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZHVtcExheWVyVHJlZShsYXllclRyZWUpCisgICAg
eworICAgICAgICBmdW5jdGlvbiByZXBsYWNlcihrZXksIHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoa2V5ID09PSAibGF5ZXJJZCIgfHwga2V5ID09PSAibWVtb3J5IikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHlwZW9mKHZhbHVlKTsKKworICAgICAgICAgICAgLy8gc29tZSB2
YWx1ZXMgZGlmZmVyIGJhc2VkIG9uIHBvcnQsIGJ1dCB0aGUgb25lcyB3ZSBtb3N0CisgICAgICAg
ICAgICAvLyBjYXJlIGFib3V0IHdpbGwgYWx3YXlzIGJlIGxlc3Mgb3IgZXF1YWwgMTAwLgorICAg
ICAgICAgICAgaWYgKChrZXkgPT09ICJ3aWR0aCIgfHwga2V5ID09PSAiaGVpZ2h0IikgJiYgdmFs
dWUgPiAxMDApIAorICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YodmFsdWUpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG4iICsgSlNPTi5zdHJpbmdpZnkobGF5ZXJUcmVl
LCByZXBsYWNlciwgIiAgICAiKSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIHN0ZXAodGVzdCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09PSAiICsgdGVzdC5uYW1lICsg
IiA9PT1cbiIpCisgICAgICAgIEluc3BlY3RvclRlc3Quc2VuZENvbW1hbmQodGVzdC5jb21tYW5k
LCB0ZXN0LnBhcmFtZXRlcnMsIGZ1bmN0aW9uKG1lc3NhZ2VPYmplY3QpIHsKKyAgICAgICAgICAg
IGlmIChtZXNzYWdlT2JqZWN0Lmhhc093blByb3BlcnR5KCJlcnJvciIpKSB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLm1l
c3NhZ2UgKyAiICgiICsgbWVzc2FnZU9iamVjdC5lcnJvci5jb2RlICsgIikiKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBB
U1MiKTsKKyAgICAgICAgICAgIHRlc3QuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5yZXN1bHQpOwor
ICAgICAgICB9KTsKKyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9N
Q29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7
CisKKzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIAorICAgIGRpdiB7
CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgdG9wOiAwOworICAgICAgICBs
ZWZ0OiAwOworICAgIH0KKyAgICAgIAorICAgIC5yZWd1bGFyIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBi
bGFjazsKKyAgICB9CisKKyAgICAuY29tcG9zaXRlZCB7CisgICAgICAgIHRvcDogMjVweDsKKyAg
ICAgICAgbGVmdDogMjVweDsKKyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDog
NTBweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgfQorICAgICAgCisgICAgLm9mZnNldCB7Cisg
ICAgICAgIGxlZnQ6IDIwMHB4OworICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRl
WigwKTsKKyAgICB9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworICAgIDxkaXYgY2xh
c3M9InJlZ3VsYXIiPjwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRp
diBjbGFzcz0icmVndWxhciBvZmZzZXQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVk
Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MDIzYzhhNWJhMzQzNWI5M2JhNDQ3ZjNi
ODJhOTc2NTQyMzJjYWFhLi4wM2QyOTFlMmM0NTBlYTQ3YzI5MmNkMzIzZDViNWVhZWM2NmUwMDA1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTEyOSw2
ICsxMTI5LDcgQEAgd2Via2l0Lm9yZy9iLzc5NzY2IGNvbXBvc2l0aW5nL3RpbGluZy90aWxlLWNh
Y2hlLXpvb21lZC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvNzk3NjYgY29tcG9zaXRp
bmcvdmlkZW8vdmlkZW8tcG9zdGVyLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi83OTc2
NiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlvbi1jb21wb3NpdGVkLXN3aXRjaC5o
dG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvNzk3NjYgY29tcG9zaXRpbmcvdmlzaWJpbGl0
eS92aXNpYmlsaXR5LWltYWdlLWxheWVycy1keW5hbWljLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8xMDQzNzIgaW5zcGVjdG9yLXByb3RvY29sL2xheWVyLXRyZWUuaHRtbCBbIFNraXAg
XQogCiAjIExBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyBvcHRpb24gdG8gbGF5ZXJU
cmVlQXNUZXh0IGlzIG9ubHkgYXBwbGljYWJsZSB0byBNYWMuCiBjb21wb3NpdGluZy92aXNpYmxl
LXJlY3QgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>