<?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>23908</bug_id>
          
          <creation_ts>2009-02-11 17:37:30 -0800</creation_ts>
          <short_desc>Add CSS parsing and style selection for 3D properties</short_desc>
          <delta_ts>2009-02-12 14:34:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>23359</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Chris Marrin">cmarrin</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>109401</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-11 17:37:30 -0800</bug_when>
    <thetext>Need to add parsing of 3D transform functions and 3D related properties (perspective, perspective-origin, transform-style-3d, and backface-visibility).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109405</commentid>
    <comment_count>1</comment_count>
      <attachid>27582</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-11 17:52:07 -0800</bug_when>
    <thetext>Created attachment 27582
Patch with test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109411</commentid>
    <comment_count>2</comment_count>
      <attachid>27582</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-11 18:45:13 -0800</bug_when>
    <thetext>Comment on attachment 27582
Patch with test

&gt; Index: WebCore/css/CSSComputedStyleDeclaration.cpp
&gt; ===================================================================

&gt; -    RefPtr&lt;WebKitCSSTransformValue&gt; transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::MatrixTransformOperation);
&gt; +    RefPtr&lt;WebKitCSSTransformValue&gt;  transformVal;

Extra space there.

&gt; +    if (transform.isAffine()) {
&gt; +        transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::MatrixTransformOperation);
&gt; +
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.a(), CSSPrimitiveValue::CSS_NUMBER));
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.b(), CSSPrimitiveValue::CSS_NUMBER));
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.c(), CSSPrimitiveValue::CSS_NUMBER));
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.d(), CSSPrimitiveValue::CSS_NUMBER));
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.e(), CSSPrimitiveValue::CSS_NUMBER));
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.f(), CSSPrimitiveValue::CSS_NUMBER));
&gt; +    } else {
&gt; +        transformVal = WebKitCSSTransformValue::create(WebKitCSSTransformValue::Matrix3DTransformOperation);
&gt; +
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.m11(), CSSPrimitiveValue::CSS_NUMBER));
&gt; +        transformVal-&gt;append(CSSPrimitiveValue::create(transform.m12(), CSSPrimitiveValue::CSS_NUMBER));

Add a FIXME comment about maybe printing out the individual operations if we can.

&gt; +        case CSSPropertyWebkitBackfaceVisibility:
&gt; +            return CSSPrimitiveValue::createIdentifier(style-&gt;backfaceVisibility() ? CSSValueVisible : CSSValueHidden);

This should use the enum values you added for backfaceVisibility().

&gt; +        case CSSPropertyWebkitTransformStyle:
&gt; +			return CSSPrimitiveValue::createIdentifier(style-&gt;transformStyle3D() ? CSSValuePreserve3d : CSSValueFlat);

Weird spacing, or tabs there. Also should use the enum values for transformStyle3D().

&gt; Index: WebCore/css/CSSParser.cpp
&gt; ===================================================================
&gt; --- WebCore/css/CSSParser.cpp	(revision 40876)
&gt; +++ WebCore/css/CSSParser.cpp	(working copy)
&gt; @@ -1298,11 +1298,52 @@ bool CSSParser::parseValue(int propId, b
&gt;          break;
&gt;      case CSSPropertyWebkitTransformOrigin:
&gt;      case CSSPropertyWebkitTransformOriginX:
&gt; -    case CSSPropertyWebkitTransformOriginY: {
&gt; +    case CSSPropertyWebkitTransformOriginY:
&gt; +    case CSSPropertyWebkitTransformOriginZ:
&gt; +    {

Brace should be on previous line.

&gt; +        else if (equalIgnoringCase(name, &quot;scalez(&quot;)) {
&gt; +            m_unit = CSSParser::FNumber;
&gt; +            m_type = WebKitCSSTransformValue::ScaleZTransformOperation;
&gt; +        } else if (equalIgnoringCase(name, &quot;scale3d(&quot;)) {
&gt; +            m_type = WebKitCSSTransformValue::Scale3DTransformOperation;
&gt; +            m_argCount = 5;
&gt; +            m_unit = CSSParser::FNumber;
&gt; +        } else if (equalIgnoringCase(name, &quot;rotatex(&quot;) ||
&gt; +                   equalIgnoringCase(name, &quot;rotatey(&quot;) ||
&gt; +                   equalIgnoringCase(name, &quot;rotatez(&quot;)) {
&gt; +            m_unit = CSSParser::FAngle;
&gt; +            if (equalIgnoringCase(name, &quot;rotatex(&quot;))
&gt; +                m_type = WebKitCSSTransformValue::RotateXTransformOperation;
&gt; +            else if (equalIgnoringCase(name, &quot;rotatey(&quot;))
&gt; +                m_type = WebKitCSSTransformValue::RotateYTransformOperation;
&gt; +            else
&gt; +                m_type = WebKitCSSTransformValue::RotateZTransformOperation;
&gt; +        } else if (equalIgnoringCase(name, &quot;rotate3d(&quot;)) {
&gt; +            m_type = WebKitCSSTransformValue::Rotate3DTransformOperation;
&gt; +            m_argCount = 7;
&gt; +            m_unit = CSSParser::FNumber;
&gt; +        } else if (equalIgnoringCase(name, &quot;translatez(&quot;)) {
&gt; +            m_unit = CSSParser::FLength | CSSParser::FPercent;
&gt; +            m_type = WebKitCSSTransformValue::TranslateZTransformOperation;
&gt; +        } else if (equalIgnoringCase(name, &quot;translate3d(&quot;)) {
&gt; +            m_type = WebKitCSSTransformValue::Translate3DTransformOperation;
&gt; +            m_argCount = 5;
&gt; +            m_unit = CSSParser::FLength | CSSParser::FPercent;
&gt; +        } else if (equalIgnoringCase(name, &quot;matrix3d(&quot;)) {
&gt; +            m_type = WebKitCSSTransformValue::Matrix3DTransformOperation;
&gt; +            m_argCount = 31;
&gt; +            m_unit = CSSParser::FNumber;
&gt; +        } else if (equalIgnoringCase(name, &quot;perspective(&quot;)) {
&gt; +            m_type = WebKitCSSTransformValue::PerspectiveTransformOperation;
&gt; +            m_unit = CSSParser::FNumber;

I think we should intersperse the 3d properties with the related 2d ones, rather than separating
them out like this.


&gt; -            if (!validUnit(a, unit, true))
&gt; +            if (info.type() == WebKitCSSTransformValue::Rotate3DTransformOperation &amp;&amp; argNumber == 3) {

Could use a comment to say why the 3rd param to Rotate3DTransformOperation is special.

&gt; -            parseFillPosition(value, value2);
&gt; -            // Unlike the other functions, parseFillPosition advances the m_valueList pointer
&gt; +            parseTransformOrigin(value, value2, value3);
&gt; +            // Unlike the other functions, parseTransformOrigin advances the m_valueList pointer

So now there are two functions that advance the m_valueList pointer? Comments need updating.

&gt; +        case CSSPropertyWebkitTransformOriginZ: {
&gt; +            if (validUnit(m_valueList-&gt;current(), FLength, m_strict))
&gt; +            value = CSSPrimitiveValue::create(m_valueList-&gt;current()-&gt;fValue,
&gt; +                                         (CSSPrimitiveValue::UnitTypes)m_valueList-&gt;current()-&gt;unit);

Bad indentation.

&gt; -    return value;
&gt; +    return (value != 0);

No need for this change.

&gt; +    return (value != 0);

&quot;return value;&quot; for consistency.

&gt; Index: WebCore/css/CSSParser.h
&gt; ===================================================================
&gt; --- WebCore/css/CSSParser.h	(revision 40876)
&gt; +++ WebCore/css/CSSParser.h	(working copy)
&gt; @@ -97,6 +97,7 @@ namespace WebCore {
&gt;          PassRefPtr&lt;CSSValue&gt; parseAnimationProperty();
&gt;          PassRefPtr&lt;CSSValue&gt; parseAnimationTimingFunction();
&gt;  
&gt; +        void parseTransformOrigin(RefPtr&lt;CSSValue&gt;&amp;, RefPtr&lt;CSSValue&gt;&amp;, RefPtr&lt;CSSValue&gt;&amp;);
&gt;          bool parseTimingFunctionValue(CSSParserValueList*&amp; args, double&amp; result);
&gt;          bool parseAnimationProperty(int propId, RefPtr&lt;CSSValue&gt;&amp;);
&gt;          bool parseTransitionShorthand(bool important);
&gt; @@ -144,8 +145,8 @@ namespace WebCore {
&gt;          bool parseGradient(RefPtr&lt;CSSValue&gt;&amp;);
&gt;  
&gt;          PassRefPtr&lt;CSSValueList&gt; parseTransform();
&gt; -        bool parseTransformOrigin(int propId, int&amp; propId1, int&amp; propId2, RefPtr&lt;CSSValue&gt;&amp;, RefPtr&lt;CSSValue&gt;&amp;);
&gt; -
&gt; +        bool parseTransformOrigin(int propId, int&amp; propId1, int&amp; propId2, int&amp; propId3, RefPtr&lt;CSSValue&gt;&amp;, RefPtr&lt;CSSValue&gt;&amp;, RefPtr&lt;CSSValue&gt;&amp;);
&gt; +        bool parsePerspectiveOrigin(int propId, int&amp; propId1, int&amp; propId,  RefPtr&lt;CSSValue&gt;&amp;, RefPtr&lt;CSSValue&gt;&amp;);
&gt;          bool parseVariable(CSSVariablesDeclaration*, const String&amp; variableName, const String&amp; variableValue);
&gt;          void parsePropertyWithResolvedVariables(int propId, bool important, CSSMutableStyleDeclaration*, CSSParserValueList*);

I really don&apos;t like the overloading; maybe rename new methods to avoid adding more?

&gt; Index: WebCore/css/CSSStyleSelector.cpp
&gt; ===================================================================

&gt; +    case CSSPropertyWebkitBackfaceVisibility:
&gt; +        HANDLE_INHERIT_AND_INITIAL(backfaceVisibility, BackfaceVisibility)
&gt; +        m_style-&gt;setBackfaceVisibility((primitiveValue &amp;&amp; primitiveValue-&gt;getIdent() == CSSValueVisible) ? BackfaceVisibilityVisible : BackfaceVisibilityHidden);

I&apos;d do the if (primitiveValue) test separately like the other places do.

&gt; +    case CSSPropertyWebkitTransformOriginZ: {
&gt; +        HANDLE_INHERIT_AND_INITIAL(transformOriginZ, TransformOriginZ)
&gt; +        CSSPrimitiveValue* primitiveValue = static_cast&lt;CSSPrimitiveValue*&gt;(value);
&gt; +        float f;
&gt; +        int type = primitiveValue-&gt;primitiveType();
&gt; +        if (type &gt; CSSPrimitiveValue::CSS_PERCENTAGE &amp;&amp; type &lt; CSSPrimitiveValue::CSS_DEG)
&gt; +            f = (float) primitiveValue-&gt;computeLengthIntForLength(style());

static_cast&lt;float&gt;

&gt; +    case CSSPropertyWebkitTransformStyle:
&gt; +        HANDLE_INHERIT_AND_INITIAL(transformStyle3D, TransformStyle3D)
&gt; +        m_style-&gt;setTransformStyle3D((primitiveValue &amp;&amp; primitiveValue-&gt;getIdent() == CSSValuePreserve3d) ? TransformStyle3DPreserve3D : TransformStyle3DFlat);

Test primitiveValue separately.

&gt; +        return;     
                  ^^^^^^  extra whitespace.
                  
&gt; +        float perspectiveValue = (float) primitiveValue-&gt;getDoubleValue();

static_cast&lt;&gt;

&gt; +    case CSSPropertyWebkitPerspectiveOrigin:
&gt; +        HANDLE_INHERIT_AND_INITIAL(perspectiveOriginX, PerspectiveOriginX)
&gt; +        HANDLE_INHERIT_AND_INITIAL(perspectiveOriginY, PerspectiveOriginY)
&gt; +        return;
&gt; +    case CSSPropertyWebkitPerspectiveOriginX: {
&gt; +        HANDLE_INHERIT_AND_INITIAL(perspectiveOriginX, PerspectiveOriginX)
&gt; +        CSSPrimitiveValue* primitiveValue = static_cast&lt;CSSPrimitiveValue*&gt;(value);
&gt; +        Length l;
&gt; +        int type = primitiveValue-&gt;primitiveType();
&gt; +        if (type &gt; CSSPrimitiveValue::CSS_PERCENTAGE &amp;&amp; type &lt; CSSPrimitiveValue::CSS_DEG)

It&apos;s odd seeing the (type &gt; CSSPrimitiveValue::CSS_PERCENTAGE &amp;&amp; type &lt; CSSPrimitiveValue::CSS_DEG)
test everywhere. Seems like a good candidate for an inline function (isLengthType()),
and replace all uses.

&gt; +                case WebKitCSSTransformValue::ScaleZTransformOperation:
&gt; +                case WebKitCSSTransformValue::Scale3DTransformOperation: {

No need to separate this code from the 2d scale logic. Intersperse them, I think.

&gt; +                case WebKitCSSTransformValue::TranslateZTransformOperation:
&gt; +                case WebKitCSSTransformValue::Translate3DTransformOperation: {

Ditto.

&gt; +                case WebKitCSSTransformValue::RotateXTransformOperation:
&gt; +                case WebKitCSSTransformValue::RotateYTransformOperation:
&gt; +                case WebKitCSSTransformValue::RotateZTransformOperation: {

Ditto.

&gt; @@ -5908,6 +6081,33 @@ bool CSSStyleSelector::createTransformOp
&gt;                      operations.operations().append(MatrixTransformOperation::create(a, b, c, d, e, f));
&gt;                      break;
&gt;                  }
&gt; +                case WebKitCSSTransformValue::Matrix3DTransformOperation: {
&gt; +                    TransformationMatrix matrix(static_cast&lt;CSSPrimitiveValue*&gt;(val-&gt;itemWithoutBoundsCheck(0))-&gt;getFloatValue(),

Use getDoubleValue everywhere now?

&gt; Index: WebCore/css/WebKitCSSTransformValue.idl
&gt; ===================================================================
&gt; --- WebCore/css/WebKitCSSTransformValue.idl	(revision 40876)
&gt; +++ WebCore/css/WebKitCSSTransformValue.idl	(working copy)
&gt; @@ -48,6 +48,16 @@ module css {
&gt;          const unsigned short CSS_SKEWX       = 9;
&gt;          const unsigned short CSS_SKEWY       = 10;
&gt;          const unsigned short CSS_MATRIX      = 11;
&gt; +        const unsigned short CSS_TRANSLATEZ  = 12;
&gt; +        const unsigned short CSS_TRANSLATE3D = 13;
&gt; +        const unsigned short CSS_ROTATEX     = 14;
&gt; +        const unsigned short CSS_ROTATEY     = 15;
&gt; +        const unsigned short CSS_ROTATEZ     = 16;

Do we want CSS_ROTATEZ as a separate type from CSS_ROTATE?

I think another round would be good, and I&apos;d like hyatt to do the final review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109502</commentid>
    <comment_count>3</comment_count>
      <attachid>27609</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-02-12 10:34:21 -0800</bug_when>
    <thetext>Created attachment 27609
replacement patch

This patch addresses all issues, except the last (ROTATE vs ROTATE_Z), which is a spec issue and requires more discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109544</commentid>
    <comment_count>4</comment_count>
      <attachid>27609</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-02-12 12:57:37 -0800</bug_when>
    <thetext>Comment on attachment 27609
replacement patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109560</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-02-12 14:34:42 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/40939</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27582</attachid>
            <date>2009-02-11 17:52:07 -0800</date>
            <delta_ts>2009-02-12 10:34:21 -0800</delta_ts>
            <desc>Patch with test</desc>
            <filename>23908.patch</filename>
            <type>text/plain</type>
            <size>74385</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDg4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMDktMDItMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkwOAorCisgICAgICAgIEFk
ZGVkIHBhcnNpbmcgb2YgM2QgdHJhbnNmb3JtIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcworICAg
ICAgICAocGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlLW9yaWdpbiwgdHJhbnNmb3JtLXN0eWxlLTNk
LCAKKyAgICAgICAgYW5kIGJhY2tmYWNlLXZpc2liaWxpdHkpLgorCisgICAgICAgIFRlc3Q6IHRy
YW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54aHRtbAorCisgICAgICAgICogY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAg
ICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1Pcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uSW5mbzo6VHJhbnNmb3Jt
T3BlcmF0aW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VQZXJzcGVjdGl2ZU9yaWdp
bik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0
eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmNzc1Rl
eHQpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Oik6CisgICAgICAgICogY3NzL1dlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJz
cGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OlJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b246OlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtT3BlcmF0aW9uOjppczNET3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmhhczNET3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24pOgorCiAyMDA5LTAyLTExICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxl
LmNvbT4KIAogICAgICAgICBFbGltaW5hdGUgY3JlYXRlSW5saW5lQm94IGFuZCBkaXJ0eUxpbmVC
b3hlcyBmcm9tIFJlbmRlck9iamVjdC4gIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGJlZW4gZGV2aXJ0
dWFsaXplZC4KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDcgQEAgc3RhdGljIGNv
bnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IAogICAgIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uTmFtZSwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
LAogICAgIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZSwKKyAgICBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tmYWNlVmlzaWJpbGl0eSwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlw
LAogICAgIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4sCkBAIC0xODksNiArMTkwLDggQEAgc3RhdGljIGNv
bnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IAogICAgIENTU1Byb3BlcnR5V2Via2l0TWFz
a09yaWdpbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tTaXplLAogICAgIENTU1Byb3BlcnR5
V2Via2l0TmJzcE1vZGUsCisgICAgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSwKKyAgICBD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLAogICAgIENTU1Byb3BlcnR5V2Via2l0
UnRsT3JkZXJpbmcsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsCkBAIC0xOTcsNiArMjAwLDcg
QEAgc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IAogICAgIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLAogICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
LAogICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLAorICAgIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNmb3JtU3R5bGUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVs
YXksCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCiAgICAgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCkBAIC00MTksMTQgKzQyMyw0MCBAQCBzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRUcmFuCiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtOwogICAgIHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJv
eC5zaXplKCksIFJlbmRlclN0eWxlOjpFeGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKIAotICAgIFJl
ZlB0cjxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZT4gdHJhbnNmb3JtVmFsID0gV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uKTsKKyAgICBSZWZQdHI8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+ICB0cmFu
c2Zvcm1WYWw7CiAKLSAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHRyYW5zZm9ybS5hKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7Ci0g
ICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zv
cm0uYigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgIHRyYW5zZm9ybVZh
bC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmMoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKLSAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5kKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSk7Ci0gICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSh0cmFuc2Zvcm0uZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwot
ICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNm
b3JtLmYoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICBpZiAodHJhbnNm
b3JtLmlzQWZmaW5lKCkpIHsKKyAgICAgICAgdHJhbnNmb3JtVmFsID0gV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uKTsKKworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5hKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUodHJhbnNmb3JtLmIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAg
ICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zv
cm0uYygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zv
cm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5kKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBw
ZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmUoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0uZigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRyYW5zZm9ybVZhbCA9IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNE
VHJhbnNmb3JtT3BlcmF0aW9uKTsKKworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMTEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTEyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUodHJhbnNmb3JtLm0xMygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRy
YW5zZm9ybS5tMTQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKworICAgICAg
ICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9y
bS5tMjEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNm
b3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTIyKCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+
YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm0yMygpLCBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMjQoKSwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpKTsKKworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMzEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTMyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUodHJhbnNmb3JtLm0zMygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAg
ICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5z
Zm9ybS5tMzQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKworICAgICAgICB0
cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5t
NDEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3Jt
VmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTQyKCksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBw
ZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm00MygpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tNDQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpKTsKKyAgICB9CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGxpc3QtPmFwcGVuZCh0
cmFuc2Zvcm1WYWwpOwpAQCAtMTExNCw2ICsxMTQ0LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIGdldFRpbWluZ0Z1bmN0aW9u
VmFsdWUoc3R5bGUtPmFuaW1hdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRBcHBlYXJhbmNlOgogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoc3R5bGUtPmFwcGVhcmFuY2UoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
YWNrZmFjZVZpc2liaWxpdHk6CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoc3R5bGUtPmJhY2tmYWNlVmlzaWJpbGl0eSgpID8gQ1NTVmFsdWVW
aXNpYmxlIDogQ1NTVmFsdWVIaWRkZW4pOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySW1hZ2U6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShz
dHlsZS0+Ym9yZGVySW1hZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Qm94SW1hZ2U6CkBAIC0xMTI1LDYgKzExNTcsMjMgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoc3R5bGUtPm1hcmdpbkJvdHRvbUNvbGxhcHNlKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFyZ2luVG9wQ29sbGFwc2UoKSk7CisgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZToKKyAgICAgICAgICAgIGlmIChzdHls
ZS0+cGVyc3BlY3RpdmUoKSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAgICAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBlcnNwZWN0aXZlKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlT3JpZ2luOiB7CisgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAg
aWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBib3ggPSBzaXppbmdCb3go
cmVuZGVyZXIpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjTWluVmFsdWUoYm94Lndp
ZHRoKCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBlcnNwZWN0aXZlT3Jp
Z2luWSgpLmNhbGNNaW5WYWx1ZShib3guaGVpZ2h0KCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cGVyc3BlY3Rp
dmVPcmlnaW5YKCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6CiAgICAgICAgICAgICBpZiAoc3R5
bGUtPnZpc3VhbGx5T3JkZXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVZpc3VhbCk7CkBAIC0xMTYxLDEyICsx
MjEwLDE4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAg
ICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7CiAgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5z
Zm9ybU9yaWdpblgoKS5jYWxjTWluVmFsdWUoYm94LndpZHRoKCkpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BYKSk7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWluVmFsdWUoYm94Lmhl
aWdodCgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAgICAgICAgICAgIGlm
IChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCisgICAgICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1Pcmln
aW5aKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSkpOwogICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCkpKTsK
KyAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSAhPSAwKQorICAg
ICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0eWxlOgorCQkJcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHN0eWxlLT50cmFuc2Zvcm1T
dHlsZTNEKCkgPyBDU1NWYWx1ZVByZXNlcnZlM2QgOiBDU1NWYWx1ZUZsYXQpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5OgogICAgICAgICAgICAgcmV0dXJu
IGdldERlbGF5VmFsdWUoc3R5bGUtPnRyYW5zaXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uOgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJDb3JlL2Nz
cy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw5
ICsyMTcsMTAgQEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcgogICAg
ICAgICAgICAgcmV0dXJuIGdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCA2KTsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
OiB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1syXSA9IHsgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWSB9OwotICAgICAgICAgICAg
cmV0dXJuIGdldFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDIpOworICAgICAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aIH07CisgICAgICAgICAgICBy
ZXR1cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMyk7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246IHsKICAgICAgICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0
eSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJ
KHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI5OCwxMSArMTI5OCw1MiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBiCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
blg6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk6IHsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWjoKKyAgICB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsMTsKKyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwyOworICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbDM7CisgICAgICAgIGludCBwcm9wSWQxLCBwcm9wSWQyLCBwcm9wSWQzOwor
ICAgICAgICBpZiAocGFyc2VUcmFuc2Zvcm1PcmlnaW4ocHJvcElkLCBwcm9wSWQxLCBwcm9wSWQy
LCBwcm9wSWQzLCB2YWwxLCB2YWwyLCB2YWwzKSkgeworICAgICAgICAgICAgYWRkUHJvcGVydHko
cHJvcElkMSwgdmFsMS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBpZiAodmFs
MikKKyAgICAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQyLCB2YWwyLnJlbGVhc2UoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgICAgIGlmICh2YWwzKQorICAgICAgICAgICAgICAgIGFkZFBy
b3BlcnR5KHByb3BJZDMsIHZhbDMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6CisgICAgICAgIGlmICh2YWx1
ZS0+aWQgPT0gQ1NTVmFsdWVGbGF0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVByZXNlcnZlM2Qp
CisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgICAgICBpZiAo
dmFsdWUtPmlkID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVIaWRk
ZW4pCisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6CisgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICh2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXJ8Rk5v
bk5lZywgbV9zdHJpY3QpKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzKXZhbHVlLT51bml0KTsKKyAgICAgICAgICAgICAgICBpZiAodmFsKSB7
CisgICAgICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgdmFsLnJlbGVhc2UoKSwg
aW1wb3J0YW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2lu
WDoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOiB7CiAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMTsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwy
OwogICAgICAgICBpbnQgcHJvcElkMSwgcHJvcElkMjsKLSAgICAgICAgaWYgKHBhcnNlVHJhbnNm
b3JtT3JpZ2luKHByb3BJZCwgcHJvcElkMSwgcHJvcElkMiwgdmFsMSwgdmFsMikpIHsKKyAgICAg
ICAgaWYgKHBhcnNlUGVyc3BlY3RpdmVPcmlnaW4ocHJvcElkLCBwcm9wSWQxLCBwcm9wSWQyLCB2
YWwxLCB2YWwyKSkgewogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkMSwgdmFsMS5yZWxl
YXNlKCksIGltcG9ydGFudCk7CiAgICAgICAgICAgICBpZiAodmFsMikKICAgICAgICAgICAgICAg
ICBhZGRQcm9wZXJ0eShwcm9wSWQyLCB2YWwyLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKQEAgLTIz
NjIsNiArMjQwMywxOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQW5p
CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdp
bihSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMiwgUmVm
UHRyPENTU1ZhbHVlPiYgdmFsdWUzKQoreworICAgIHBhcnNlRmlsbFBvc2l0aW9uKHZhbHVlMSwg
dmFsdWUyKTsKKworICAgIC8vIG5vdyBnZXQgegorICAgIGlmIChtX3ZhbHVlTGlzdC0+Y3VycmVu
dCgpICYmIHZhbGlkVW5pdChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLCBGTGVuZ3RoLCBtX3N0cmlj
dCkpCisgICAgICAgIHZhbHVlMyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV92YWx1ZUxp
c3QtPmN1cnJlbnQoKS0+ZlZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyltX3ZhbHVlTGlzdC0+Y3VycmVu
dCgpLT51bml0KTsKKyAgICBpZiAodmFsdWUzKQorICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgp
OworfQorCiBib29sIENTU1BhcnNlcjo6cGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNl
clZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYgcmVzdWx0KQogewogICAgIENTU1BhcnNlclZhbHVl
KiB2ID0gYXJncy0+Y3VycmVudCgpOwpAQCAtNDAyNCw3ICs0MDc3LDQzIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fYXJnQ291bnQgPSAxMTsKICAgICAgICAgICAgIG1fdW5pdCA9IENTU1BhcnNl
cjo6Rk51bWJlcjsKICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UobmFtZSwgInNjYWxleigiKSkgeworICAgICAgICAgICAgbV91bml0ID0gQ1NT
UGFyc2VyOjpGTnVtYmVyOworICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU6OlNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbjsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGUzZCgiKSkgeworICAgICAgICAgICAgbV90eXBlID0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlM0RUcmFuc2Zvcm1PcGVyYXRpb247CisgICAg
ICAgICAgICBtX2FyZ0NvdW50ID0gNTsKKyAgICAgICAgICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6
Rk51bWJlcjsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAicm90
YXRleCgiKSB8fAorICAgICAgICAgICAgICAgICAgIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJy
b3RhdGV5KCIpIHx8CisgICAgICAgICAgICAgICAgICAgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
InJvdGF0ZXooIikpIHsKKyAgICAgICAgICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6RkFuZ2xlOwor
ICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJyb3RhdGV4KCIpKQorICAg
ICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVYVHJh
bnNmb3JtT3BlcmF0aW9uOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgInJvdGF0ZXkoIikpCisgICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OlJvdGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0
ZVpUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgInJvdGF0ZTNkKCIpKSB7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6Um90YXRlM0RUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICBt
X2FyZ0NvdW50ID0gNzsKKyAgICAgICAgICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6Rk51bWJlcjsK
KyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHJhbnNsYXRleigi
KSkgeworICAgICAgICAgICAgbV91bml0ID0gQ1NTUGFyc2VyOjpGTGVuZ3RoIHwgQ1NTUGFyc2Vy
OjpGUGVyY2VudDsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOworICAgICAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJ0cmFuc2xhdGUzZCgiKSkgeworICAgICAgICAgICAgbV90eXBl
ID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9u
OworICAgICAgICAgICAgbV9hcmdDb3VudCA9IDU7CisgICAgICAgICAgICBtX3VuaXQgPSBDU1NQ
YXJzZXI6OkZMZW5ndGggfCBDU1NQYXJzZXI6OkZQZXJjZW50OworICAgICAgICB9IGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJtYXRyaXgzZCgiKSkgeworICAgICAgICAgICAgbV90
eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
OworICAgICAgICAgICAgbV9hcmdDb3VudCA9IDMxOworICAgICAgICAgICAgbV91bml0ID0gQ1NT
UGFyc2VyOjpGTnVtYmVyOworICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJwZXJzcGVjdGl2ZSgiKSkgeworICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOworICAgICAgICAgICAg
bV91bml0ID0gQ1NTUGFyc2VyOjpGTnVtYmVyOworICAgICAgICB9CisKICAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJzY2FsZSgiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1l
LCAic2tldygiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHJhbnNsYXRlKCIpKSB7CiAg
ICAgICAgICAgICBtX2FsbG93U2luZ2xlQXJndW1lbnQgPSB0cnVlOwogICAgICAgICAgICAgbV9h
cmdDb3VudCA9IDM7CkBAIC00MDgwLDcgKzQxNjksMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxp
c3Q+IENTU1BhcnNlcjo6cGFycwogICAgICAgICB3aGlsZSAoYSkgewogICAgICAgICAgICAgQ1NT
UGFyc2VyOjpVbml0cyB1bml0ID0gaW5mby51bml0KCk7CiAKLSAgICAgICAgICAgIGlmICghdmFs
aWRVbml0KGEsIHVuaXQsIHRydWUpKQorICAgICAgICAgICAgaWYgKGluZm8udHlwZSgpID09IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbiAmJiBhcmdO
dW1iZXIgPT0gMykgeworICAgICAgICAgICAgICAgIGlmICghdmFsaWRVbml0KGEsIEZBbmdsZSwg
dHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfSBlbHNl
IGlmICghdmFsaWRVbml0KGEsIHVuaXQsIHRydWUpKQogICAgICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBZGQgdGhlIHZhbHVlIHRvIHRoZSBjdXJy
ZW50IHRyYW5zZm9ybSBvcGVyYXRpb24uCkBAIC00MTAwLDE5ICs0MTkyLDIxIEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnMKICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdpbihpbnQgcHJvcElk
LCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUsIFJl
ZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMikKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9y
aWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgaW50JiBwcm9wSWQz
LCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUyLCBSZWZQ
dHI8Q1NTVmFsdWU+JiB2YWx1ZTMpCiB7CiAgICAgcHJvcElkMSA9IHByb3BJZDsKICAgICBwcm9w
SWQyID0gcHJvcElkOworICAgIHByb3BJZDMgPSBwcm9wSWQ7CiAgICAgaWYgKHByb3BJZCA9PSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbikgewogICAgICAgICBwcm9wSWQxID0gQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOwogICAgICAgICBwcm9wSWQyID0gQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOworICAgICAgICBwcm9wSWQzID0gQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5aOwogICAgIH0KIAogICAgIHN3aXRjaCAocHJvcElkKSB7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46Ci0gICAgICAg
ICAgICBwYXJzZUZpbGxQb3NpdGlvbih2YWx1ZSwgdmFsdWUyKTsKLSAgICAgICAgICAgIC8vIFVu
bGlrZSB0aGUgb3RoZXIgZnVuY3Rpb25zLCBwYXJzZUZpbGxQb3NpdGlvbiBhZHZhbmNlcyB0aGUg
bV92YWx1ZUxpc3QgcG9pbnRlcgorICAgICAgICAgICAgcGFyc2VUcmFuc2Zvcm1PcmlnaW4odmFs
dWUsIHZhbHVlMiwgdmFsdWUzKTsKKyAgICAgICAgICAgIC8vIFVubGlrZSB0aGUgb3RoZXIgZnVu
Y3Rpb25zLCBwYXJzZVRyYW5zZm9ybU9yaWdpbiBhZHZhbmNlcyB0aGUgbV92YWx1ZUxpc3QgcG9p
bnRlcgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5YOiB7CiAgICAgICAgICAgICBib29sIHhGb3VuZCA9IGZhbHNlLCB5Rm91
bmQgPSB0cnVlOwpAQCAtNDEyOCw5ICs0MjIyLDQ5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRy
YW5zZm9ybU9yaWdpbihpbnQKICAgICAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblo6IHsKKyAgICAgICAgICAgIGlmICh2YWxpZFVuaXQobV92YWx1
ZUxpc3QtPmN1cnJlbnQoKSwgRkxlbmd0aCwgbV9zdHJpY3QpKQorICAgICAgICAgICAgdmFsdWUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1fdmFsdWVMaXN0LT5jdXJyZW50KCktPmZWYWx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXMpbV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+dW5pdCk7CisgICAgICAg
ICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVybiB2YWx1
ZTsKKyAgICByZXR1cm4gKHZhbHVlICE9IDApOworfQorCitib29sIENTU1BhcnNlcjo6cGFyc2VQ
ZXJzcGVjdGl2ZU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwg
UmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMikKK3sKKyAg
ICBwcm9wSWQxID0gcHJvcElkOworICAgIHByb3BJZDIgPSBwcm9wSWQ7CisgICAgaWYgKHByb3BJ
ZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luKSB7CisgICAgICAgIHByb3BJ
ZDEgPSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWDsKKyAgICAgICAgcHJvcElk
MiA9IENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOworICAgIH0KKworICAgIHN3
aXRjaCAocHJvcElkKSB7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2
ZU9yaWdpbjoKKyAgICAgICAgICAgIHBhcnNlRmlsbFBvc2l0aW9uKHZhbHVlLCB2YWx1ZTIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblg6IHsKKyAgICAgICAgICAgIGJvb2wgeEZvdW5kID0gZmFsc2UsIHlGb3VuZCA9
IHRydWU7CisgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmlsbFBvc2l0aW9uWFkoeEZvdW5kLCB5
Rm91bmQpOworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIG1fdmFsdWVM
aXN0LT5uZXh0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOiB7CisgICAgICAgICAgICBib29s
IHhGb3VuZCA9IHRydWUsIHlGb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgdmFsdWUgPSBwYXJz
ZUZpbGxQb3NpdGlvblhZKHhGb3VuZCwgeUZvdW5kKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkK
KyAgICAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuICh2YWx1ZSAhPSAwKTsKIH0KIAog
c3RhdGljIGlubGluZSBpbnQgeXllcnJvcihjb25zdCBjaGFyKikgeyByZXR1cm4gMTsgfQpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmgJKHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUFuaW1hdGlvblByb3BlcnR5KCk7CiAgICAgICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oKTsKIAor
ICAgICAgICB2b2lkIHBhcnNlVHJhbnNmb3JtT3JpZ2luKFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQ
dHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwogICAgICAgICBib29sIHBhcnNlVGlt
aW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3VibGUmIHJlc3Vs
dCk7CiAgICAgICAgIGJvb2wgcGFyc2VBbmltYXRpb25Qcm9wZXJ0eShpbnQgcHJvcElkLCBSZWZQ
dHI8Q1NTVmFsdWU+Jik7CiAgICAgICAgIGJvb2wgcGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJv
b2wgaW1wb3J0YW50KTsKQEAgLTE0NCw4ICsxNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgcGFyc2VHcmFkaWVudChSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKICAgICAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlVHJhbnNmb3JtKCk7Ci0gICAgICAgIGJvb2wg
cGFyc2VUcmFuc2Zvcm1PcmlnaW4oaW50IHByb3BJZCwgaW50JiBwcm9wSWQxLCBpbnQmIHByb3BJ
ZDIsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7Ci0KKyAgICAgICAgYm9v
bCBwYXJzZVRyYW5zZm9ybU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJv
cElkMiwgaW50JiBwcm9wSWQzLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYs
IFJlZlB0cjxDU1NWYWx1ZT4mKTsKKyAgICAgICAgYm9vbCBwYXJzZVBlcnNwZWN0aXZlT3JpZ2lu
KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQsICBSZWZQdHI8Q1NTVmFsdWU+
JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwogICAgICAgICBib29sIHBhcnNlVmFyaWFibGUoQ1NTVmFy
aWFibGVzRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3Ry
aW5nJiB2YXJpYWJsZVZhbHVlKTsKICAgICAgICAgdm9pZCBwYXJzZVByb3BlcnR5V2l0aFJlc29s
dmVkVmFyaWFibGVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50LCBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiosIENTU1BhcnNlclZhbHVlTGlzdCopOwogCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TmFtZXMuaW4JKHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1l
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSw3IEBAIHpvb20KIC13ZWJraXQtYW5p
bWF0aW9uLW5hbWUKIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbgogLXdlYmtpdC1h
cHBlYXJhbmNlCistd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHkKIC13ZWJraXQtYmFja2dyb3Vu
ZC1jbGlwCiAtd2Via2l0LWJhY2tncm91bmQtY29tcG9zaXRlCiAtd2Via2l0LWJhY2tncm91bmQt
b3JpZ2luCkBAIC0yMTYsNiArMjE3LDEwIEBAIHpvb20KIC13ZWJraXQtbWF0Y2gtbmVhcmVzdC1t
YWlsLWJsb2NrcXVvdGUtY29sb3IKIC13ZWJraXQtbmJzcC1tb2RlCiAtd2Via2l0LXBhZGRpbmct
c3RhcnQKKy13ZWJraXQtcGVyc3BlY3RpdmUKKy13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luCist
d2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbi14Cistd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbi15
CiAtd2Via2l0LXJ0bC1vcmRlcmluZwogLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVj
dAogLXdlYmtpdC10ZXh0LWZpbGwtY29sb3IKQEAgLTIyOCw2ICsyMzMsOCBAQCB6b29tCiAtd2Vi
a2l0LXRyYW5zZm9ybS1vcmlnaW4KIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi14CiAtd2Via2l0
LXRyYW5zZm9ybS1vcmlnaW4teQorLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXoKKy13ZWJraXQt
dHJhbnNmb3JtLXN0eWxlCiAtd2Via2l0LXRyYW5zaXRpb24KIC13ZWJraXQtdHJhbnNpdGlvbi1k
ZWxheQogLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTUgKzYzLDE4IEBACiAjaW5jbHVkZSAiSFRNTFRl
eHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRp
b24uaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKKyNpbmNsdWRlICJQZXJz
cGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRl
ICJSZW5kZXJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIgor
I2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUu
aCIKICNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgpAQCAtODMsNiArODYsNyBAQAogI2luY2x1ZGUgIlN0eWxl
R2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUg
IlRleHQuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIlRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hl
ZXRzLmgiCiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgiCkBAIC0xNDgwLDcgKzE0
ODQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkanVzdFJlbmRlclN0eWxlCiAgICAgLy8g
Y2FzZXMgd2hlcmUgb2JqZWN0cyB0aGF0IHNob3VsZCBiZSBibGVuZGVkIGFzIGEgc2luZ2xlIHVu
aXQgZW5kIHVwIHdpdGggYSBub24tdHJhbnNwYXJlbnQKICAgICAvLyBvYmplY3Qgd2VkZ2VkIGlu
IGJldHdlZW4gdGhlbS4gIEF1dG8gei1pbmRleCBhbHNvIGJlY29tZXMgMCBmb3Igb2JqZWN0cyB0
aGF0IHNwZWNpZnkgdHJhbnNmb3Jtcy9tYXNrcy9yZWZsZWN0aW9ucy4KICAgICBpZiAoc3R5bGUt
Pmhhc0F1dG9aSW5kZXgoKSAmJiAoKGUgJiYgZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50
KCkgPT0gZSkgfHwgc3R5bGUtPm9wYWNpdHkoKSA8IDEuMGYgfHwgCi0gICAgICAgIHN0eWxlLT5o
YXNUcmFuc2Zvcm0oKSB8fCBzdHlsZS0+aGFzTWFzaygpIHx8IHN0eWxlLT5ib3hSZWZsZWN0KCkp
KQorICAgICAgICBzdHlsZS0+aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgfHwgc3R5bGUt
Pmhhc01hc2soKSB8fCBzdHlsZS0+Ym94UmVmbGVjdCgpKSkKICAgICAgICAgc3R5bGUtPnNldFpJ
bmRleCgwKTsKICAgICAKICAgICAvLyBCdXR0b24sIGxlZ2VuZCwgaW5wdXQsIHNlbGVjdCBhbmQg
dGV4dGFyZWEgYWxsIGNvbnNpZGVyIHdpZHRoIHZhbHVlcyBvZiAnYXV0bycgdG8gYmUgJ2ludHJp
bnNpYycuCkBAIC00NjA4LDYgKzQ2MTIsMTAgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBs
eVByb3BlcnR5KGludAogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNv
ZGVSYW5nZTogLy8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVsZXMuCiAgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChiYWNrZmFjZVZpc2liaWxpdHksIEJhY2tmYWNl
VmlzaWJpbGl0eSkKKyAgICAgICAgbV9zdHlsZS0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5KChwcmlt
aXRpdmVWYWx1ZSAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc2li
bGUpID8gQmFja2ZhY2VWaXNpYmlsaXR5VmlzaWJsZSA6IEJhY2tmYWNlVmlzaWJpbGl0eUhpZGRl
bik7CisgICAgICAgIHJldHVybjsgICAgIAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hE
aXJlY3Rpb246CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKGJveERpcmVjdGlv
biwgQm94RGlyZWN0aW9uKQogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUpCkBAIC00OTgzLDYg
KzQ5OTEsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWCwgVHJhbnNmb3JtT3JpZ2luWCkKICAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWSwgVHJhbnNm
b3JtT3JpZ2luWSkKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3Jt
T3JpZ2luWiwgVHJhbnNmb3JtT3JpZ2luWikKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKHRyYW5zZm9ybU9yaWdpblgsIFRyYW5zZm9ybU9yaWdpblgpCkBAIC01MDEy
LDYgKzUwMjEsNjggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAog
ICAgICAgICBtX3N0eWxlLT5zZXRUcmFuc2Zvcm1PcmlnaW5ZKGwpOwogICAgICAgICBicmVhazsK
ICAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblo6IHsKKyAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWiwgVHJhbnNm
b3JtT3JpZ2luWikKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGZsb2F0IGY7
CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAg
ICAgICAgaWYgKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlw
ZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKQorICAgICAgICAgICAgZiA9IChmbG9hdCkg
cHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNm
b3JtT3JpZ2luWihmKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwodHJhbnNmb3JtU3R5bGUzRCwgVHJhbnNmb3JtU3R5bGUzRCkKKyAgICAgICAgbV9zdHlsZS0+
c2V0VHJhbnNmb3JtU3R5bGUzRCgocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKSA/IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2
ZTNEIDogVHJhbnNmb3JtU3R5bGUzREZsYXQpOworICAgICAgICByZXR1cm47ICAgICAKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6IHsKKyAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmUsIFBlcnNwZWN0aXZlKQorICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25l
KSB7CisgICAgICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZSgwKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBmbG9hdCBwZXJzcGVjdGl2ZVZhbHVlID0gKGZsb2F0KSBwcmltaXRp
dmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgaWYgKHBlcnNwZWN0aXZlVmFsdWUg
Pj0gMC4wZikKKyAgICAgICAgICAgIG1fc3R5bGUtPnNldFBlcnNwZWN0aXZlKHBlcnNwZWN0aXZl
VmFsdWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpbjoKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwo
cGVyc3BlY3RpdmVPcmlnaW5YLCBQZXJzcGVjdGl2ZU9yaWdpblgpCisgICAgICAgIEhBTkRMRV9J
TkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlT3JpZ2luWSwgUGVyc3BlY3RpdmVPcmlnaW5Z
KQorICAgICAgICByZXR1cm47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWDogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVjdGl2
ZU9yaWdpblgsIFBlcnNwZWN0aXZlT3JpZ2luWCkKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIExlbmd0aCBsOworICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5w
cmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmICh0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKKyAgICAg
ICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5n
dGgoc3R5bGUoKSwgem9vbUZhY3RvciksIEZpeGVkKTsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCisgICAgICAgICAgICBsID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2
ZU9yaWdpblgobCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWTogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTChwZXJzcGVjdGl2ZU9yaWdpblksIFBlcnNwZWN0aXZlT3JpZ2luWSkKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIExlbmd0aCBsOworICAgICAgICBpbnQgdHlwZSA9
IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGlmICh0eXBlID4gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0RFRykKKyAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgem9vbUZhY3RvciksIEZpeGVkKTsKKyAgICAg
ICAgZWxzZSBpZih0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKKyAg
ICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBl
cmNlbnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3R5
bGUtPnNldFBlcnNwZWN0aXZlT3JpZ2luWShsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgogICAgICAgICBpZiAoaXNJbml0aWFs
KQogICAgICAgICAgICAgbV9zdHlsZS0+Y2xlYXJBbmltYXRpb25zKCk7CkBAIC01NzkzLDYgKzU4
NjQsMTYgQEAgc3RhdGljIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZQogICAgICAg
ICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjog
ICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOwogICAgICAgICBjYXNl
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3WVRyYW5zZm9ybU9wZXJhdGlvbjogICAgICAg
ICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOwogICAgICAgICBjYXNlIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246ICAgICAgICAgcmV0
dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOworICAgICAgICBjYXNlIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgcmV0dXJuIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OlRyYW5zbGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiAgICByZXR1cm4gVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OlJvdGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246ICAgICAgICByZXR1cm4gVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZTo6Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbjogICAgICAgIHJldHVybiBUcmFuc2Zv
cm1PcGVyYXRpb246OlJPVEFURV9ZOworICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpSb3RhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgICAgcmV0dXJuIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6Uk9UQVRFX1o7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6
OlJvdGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgICByZXR1cm4gVHJhbnNmb3JtT3BlcmF0
aW9uOjpST1RBVEVfM0Q7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNj
YWxlWlRyYW5zZm9ybU9wZXJhdGlvbjogICAgICAgICByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV9aOworICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZTNE
VHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NB
TEVfM0Q7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlBlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uOiAgICByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVD
VElWRTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb246ICAgICAgIHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8z
RDsKICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VW5rbm93blRyYW5zZm9y
bU9wZXJhdGlvbjogICAgICAgIHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU7CiAgICAg
fQogICAgIHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU7CkBAIC01ODI3LDcgKzU5MDgs
MzMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHN4LCBz
eSwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh2YWwtPm9wZXJhdGlvblR5cGUoKSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoc3gsIHN5LCAxLjAsIGdldFRyYW5zZm9ybU9wZXJhdGlv
blR5cGUodmFsLT5vcGVyYXRpb25UeXBlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpTY2FsZVpUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2Fz
ZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogewor
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgc3ggPSAxLjA7CisgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSBzeSA9IDEuMDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN6ID0gMS4wOwor
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWU6OlNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN6ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN5ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9u
VHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5sZW5ndGgoKSA+IDIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRo
aXJkVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN6ID0g
dGhpcmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAxKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNv
bmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBz
ZWNvbmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0gc3g7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUoc3gsIHN5LCBzeiwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh2YWwt
Pm9wZXJhdGlvblR5cGUoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6
OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjoKQEAgLTU4NTEsNyArNTk1OCwzNyBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgICAg
IGlmICghb2spCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHR4LCB0eSwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlw
ZSh2YWwtPm9wZXJhdGlvblR5cGUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
cy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRl
KHR4LCB0eSwgTGVuZ3RoKDAsIEZpeGVkKSwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh2YWwt
Pm9wZXJhdGlvblR5cGUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6
OlRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKKyAg
ICAgICAgICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIExl
bmd0aCB0eCA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAgICAgICAgICAgIExlbmd0aCB0
eSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAgICAgICAgICAgIExlbmd0aCB0eiA9IExl
bmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlvblR5
cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5zZm9ybU9wZXJh
dGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHR6ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0
VmFsdWUsIGluU3R5bGUsICZvayk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbC0+
b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVZVHJh
bnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9M
ZW5ndGgoZmlyc3RWYWx1ZSwgaW5TdHlsZSwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RW
YWx1ZSwgaW5TdHlsZSwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPm9w
ZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5z
Zm9ybU9wZXJhdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPmxl
bmd0aCgpID4gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHogPSBjb252ZXJ0VG9MZW5ndGgodGhpcmRWYWx1ZSwgaW5TdHlsZSwgJm9rKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHZhbC0+bGVuZ3RoKCkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoc2Vjb25kVmFsdWUsIGluU3R5
bGUsICZvayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFvaykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHgsIHR5LCB0eiwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9u
VHlwZSh2YWwtPm9wZXJhdGlvblR5cGUoKSkpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjogewpAQCAtNTg2Myw3ICs2MDAwLDQz
IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoZmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVFVSTikKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gdHVy
bjJkZWcoYW5nbGUpOwogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6
Y3JlYXRlKGFuZ2xlLCBnZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHZhbC0+b3BlcmF0aW9uVHlw
ZSgpKSkpOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoMCwgMCwgMSwgYW5nbGUsIGdldFRy
YW5zZm9ybU9wZXJhdGlvblR5cGUodmFsLT5vcGVyYXRpb25UeXBlKCkpKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOgorICAg
ICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZVlUcmFuc2Zv
cm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZTo6Um90YXRlWlRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgeCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB5ID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgZG91YmxlIHogPSAwOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgYW5nbGUg
PSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
Zmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFE
KQorICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSByYWQyZGVnKGFuZ2xlKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
ID0gZ3JhZDJkZWcoYW5nbGUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgeCA9
IDE7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVZVHJhbnNmb3JtT3BlcmF0aW9uKQorICAg
ICAgICAgICAgICAgICAgICAgICAgeSA9IDE7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHogPSAxOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
eCwgeSwgeiwgYW5nbGUsIGdldFRyYW5zZm9ybU9wZXJhdGlvblR5cGUodmFsLT5vcGVyYXRpb25U
eXBlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGUzRFRy
YW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOworICAgICAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygzKSk7CisgICAgICAgICAgICAgICAgICAgIGRv
dWJsZSB4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHkgPSBzZWNvbmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZG91YmxlIHogPSB0aGlyZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBmb3VydGhWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvdXJ0aFZhbHVlLT5wcmltaXRpdmVUeXBlKCkg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQpCisgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZSA9IHJhZDJkZWcoYW5nbGUpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3Vy
dGhWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gZ3JhZDJkZWcoYW5nbGUpOworICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwgeSwgeiwgYW5nbGUsIGdldFRyYW5zZm9ybU9wZXJhdGlv
blR5cGUodmFsLT5vcGVyYXRpb25UeXBlKCkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOgpAQCAtNTkwOCw2ICs2MDgxLDMzIEBA
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKGEsIGIsIGMsIGQsIGUsIGYpKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSktPmdldEZsb2F0VmFsdWUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKS0+Z2V0Rmxv
YXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikp
LT5nZXRGbG9hdFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygzKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDQpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXRGbG9hdFZhbHVlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg2KSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDcpKS0+Z2V0RmxvYXRWYWx1ZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOCkpLT5nZXRGbG9h
dFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg5KSkt
PmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDEwKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDExKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDEyKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEzKSktPmdldEZsb2F0VmFsdWUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE0KSktPmdldEZsb2F0VmFs
dWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE1KSktPmdl
dEZsb2F0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9u
cygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeCkpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9ICAgCisgICAgICAg
ICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6UGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb246IHsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHAgPSBmaXJzdFZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAocCA8IDAuMCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uOjpjcmVhdGUocCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VW5r
bm93blRyYW5zZm9ybU9wZXJhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtl
eXdvcmRzLmluCShyZXZpc2lvbiA0MDg3NikKKysrIFdlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU3NSw2ICs1NzUsMTIgQEAgcnVubmluZwogcGF1c2Vk
CiAKICMKKyMgQ1NTX1BST1BfX1dFQktJVF9UUkFOU0ZPUk1fU1RZTEUKKyMKK2ZsYXQKK3ByZXNl
cnZlLTNkCisKKyMKICMgQ1NTX1BST1BfX1dFQktJVF9UUkFOU0lUSU9OX1RJTUlOR19GVU5DVElP
TgogIyBDU1NfUFJPUF9fV0VCS0lUX0FOSU1BVElPTl9USU1JTkdfRlVOQ1RJT04KICMKQEAgLTYw
MSw0ICs2MDcsNCBAQCBwYWludGVkCiBmaWxsCiBzdHJva2UKICNhbGwKLSNub25lClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorI25vbmUKSW5kZXg6IFdlYkNvcmUvY3NzL1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5jcHAJKHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwzNiBAQCBTdHJp
bmcgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmNzc1RleHQoCiAgICAgICAgIGNhc2UgTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uOgogICAgICAgICAgICAgcmVzdWx0ICs9ICJtYXRyaXgoIjsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVyYXRp
b246CisgICAgICAgICAgICByZXN1bHQgKz0gInRyYW5zbGF0ZVooIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFRyYW5zbGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAg
ICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGUzZCgiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUm90YXRlWFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCAr
PSAicm90YXRlWCgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUm90YXRlWVRy
YW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAicm90YXRlWSgiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUm90YXRlWlRyYW5zZm9ybU9wZXJhdGlvbjoK
KyAgICAgICAgICAgIHJlc3VsdCArPSAicm90YXRlWigiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUm90YXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1
bHQgKz0gInJvdGF0ZTNkKCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY2Fs
ZVpUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInNjYWxlWigiOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlv
bjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAic2NhbGUzZCgiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAg
ICByZXN1bHQgKz0gInBlcnNwZWN0aXZlKCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAi
bWF0cml4M2QoIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oCShyZXZpc2lvbiA0MDg3NikKKysrIFdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
U2tld1RyYW5zZm9ybU9wZXJhdGlvbiwKICAgICAgICAgU2tld1hUcmFuc2Zvcm1PcGVyYXRpb24s
CiAgICAgICAgIFNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uLAotICAgICAgICBNYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb24KKyAgICAgICAgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBU
cmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBUcmFuc2xhdGUzRFRyYW5zZm9y
bU9wZXJhdGlvbiwKKyAgICAgICAgUm90YXRlWFRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAg
Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgUm90YXRlWlRyYW5zZm9ybU9wZXJh
dGlvbiwKKyAgICAgICAgUm90YXRlM0RUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFNjYWxl
WlRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgU2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlvbiwK
KyAgICAgICAgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIE1hdHJpeDNE
VHJhbnNmb3JtT3BlcmF0aW9uCiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlPiBjcmVhdGUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSB0eXBlKQpJ
bmRleDogV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbAkocmV2aXNpb24gNDA4
NzYpCisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDYgKzQ4LDE2IEBAIG1vZHVsZSBjc3MgewogICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBDU1NfU0tFV1ggICAgICAgPSA5OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBDU1NfU0tFV1kgICAgICAgPSAxMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Q1NTX01BVFJJWCAgICAgID0gMTE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19U
UkFOU0xBVEVaICA9IDEyOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfVFJBTlNM
QVRFM0QgPSAxMzsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFURVggICAg
ID0gMTQ7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19ST1RBVEVZICAgICA9IDE1
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfUk9UQVRFWiAgICAgPSAxNjsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFURTNEICAgID0gMTc7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19TQ0FMRVogICAgICA9IDE4OworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBDU1NfU0NBTEUzRCAgICAgPSAxOTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgQ1NTX1BFUlNQRUNUSVZFID0gMjA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IENTU19NQVRSSVgzRCAgICA9IDIxOwogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBzaG9ydCBvcGVyYXRpb25UeXBlOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIk1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAKLSNpZiBFTkFCTEUoM0Rf
VFJBTlNGT1JNUykKLQogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKQEAgLTU2LDUgKzU0LDMgQEAgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IE1hdHJp
eDNEVAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoM0Rf
VFJBTlNGT1JNUykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9N
YXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZp
c2lvbiA0MDg3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw2IEBA
CiAKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb24uaCIKIAotI2lmIEVOQUJMRSgzRF9UUkFO
U0ZPUk1TKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uIDogcHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbiB7CkBAIC03MSw2ICs2OSw0IEBA
IHByaXZhdGU6ICAgIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFC
TEUoM0RfVFJBTlNGT1JNUykKLQogI2VuZGlmIC8vIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
X2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAkocmV2
aXNpb24gNDA4NzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKIAotI2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQotCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjEsNSArNTksMyBAQCBQYXNz
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHJldmlzaW9uIDQwODc2KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3Bl
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDYgQEAKIAogI2luY2x1ZGUgIlRy
YW5zZm9ybU9wZXJhdGlvbi5oIgogCi0jaWYgRU5BQkxFKDNEX1RSQU5TRk9STVMpCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24gOiBw
dWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsKQEAgLTcwLDYgKzY4LDQgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKDNEX1RSQU5TRk9STVMp
Ci0KICNlbmRpZiAvLyBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbl9oCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDcgQEAgUGFzc1JlZlB0cjxUcmFuc2Zvcm1P
cGVyYXRpb24+IFJvdGF0ZVRyYQogICAgICAgICB5ID0gMC4wZjsKICAgICAgICAgeiA9IDEuMGY7
CiAgICAgfQotI2lmIEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQogICAgIHJldHVybiBSb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh4LCB5LCB6LCBhbmdsZSwgUk9UQVRFXzNEKTsKLSNlbHNl
Ci0gICAgcmV0dXJuIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKDAsIDAsIHosIGFu
Z2xlLCBST1RBVEVfWik7Ci0jZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEyICs3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICwg
bV9hbmdsZShhbmdsZSkKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICB7Ci0jaWYgRU5BQkxF
KDNEX1RSQU5TRk9STVMpCiAgICAgICAgIEFTU0VSVCh0eXBlID09IFJPVEFURV9YIHx8IHR5cGUg
PT0gUk9UQVRFX1kgfHwgdHlwZSA9PSBST1RBVEVfWiB8fCB0eXBlID09IFJPVEFURV8zRCk7Ci0j
ZWxzZQotICAgICAgICBBU1NFUlQodHlwZSA9PSBST1RBVEVfWik7Ci0gICAgICAgIEFTU0VSVCh4
ID09IDAgJiYgeSA9PSAwKTsKLSNlbmRpZgogICAgIH0KIAogICAgIGRvdWJsZSBtX3g7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVy
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3oo
c3opCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgewotI2lmIEVOQUJMRSgzRF9UUkFOU0ZP
Uk1TKQogICAgICAgICBBU1NFUlQodHlwZSA9PSBTQ0FMRV9YIHx8IHR5cGUgPT0gU0NBTEVfWSB8
fCB0eXBlID09IFNDQUxFX1ogfHwgdHlwZSA9PSBTQ0FMRSB8fCB0eXBlID09IFNDQUxFXzNEKTsK
LSNlbHNlCi0gICAgICAgIEFTU0VSVCh0eXBlID09IFNDQUxFX1ggfHwgdHlwZSA9PSBTQ0FMRV9Z
IHx8IHR5cGUgPT0gU0NBTEUpOwotICAgICAgICBBU1NFUlQoc3ogPT0gMSk7Ci0jZW5kaWYKICAg
ICB9CiAgICAgICAgIAogICAgIGRvdWJsZSBtX3g7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCShy
ZXZpc2lvbiA0MDg3NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIGdldE9wZXJhdGlvblR5cGUoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKLSNpZiBFTkFCTEUoM0RfVFJBTlNGT1JN
UykKICAgICBib29sIGlzM0RPcGVyYXRpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgT3BlcmF0
aW9uVHlwZSBvcFR5cGUgPSBnZXRPcGVyYXRpb25UeXBlKCk7CkBAIC04MCw3ICs3OSw2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgIG9wVHlwZSA9PSBNQVRSSVhfM0QgfHwKICAgICAgICAgICAg
ICAgIG9wVHlwZSA9PSBQRVJTUEVDVElWRTsKICAgICB9Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAkocmV2aXNpb24gNDA4NzYp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG1fb3BlcmF0aW9uc1tpXS0+YXBwbHkodCwgc3opOwogICAgIH0KICAgICAKLSNpZiBFTkFC
TEUoM0RfVFJBTlNGT1JNUykKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIG9wZXJh
dGlvbiB0eXBlcyBhcmUgM0Qgb3BlcmF0aW9uIHR5cGVzIChldmVuIGlmIHRoZQogICAgIC8vIHZh
bHVlcyBkZXNjcmliZSBhZmZpbmUgdHJhbnNmb3JtcykKICAgICBib29sIGhhczNET3BlcmF0aW9u
KCkgY29uc3QKQEAgLTU3LDcgKzU2LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotI2VuZGlmCiAgICAgCiAgICAg
VmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMoKSB7IHJldHVy
biBtX29wZXJhdGlvbnM7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJh
dGlvbj4gPiYgb3BlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gNDA4NzYpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDExICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICwgbV96KHR6KQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgIHsKLSNpZiBFTkFC
TEUoM0RfVFJBTlNGT1JNUykKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVFJBTlNMQVRFX1ggfHwg
dHlwZSA9PSBUUkFOU0xBVEVfWSB8fCB0eXBlID09IFRSQU5TTEFURV9aIHx8IHR5cGUgPT0gVFJB
TlNMQVRFIHx8IHR5cGUgPT0gVFJBTlNMQVRFXzNEKTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVCh0
eXBlID09IFRSQU5TTEFURV9YIHx8IHR5cGUgPT0gVFJBTlNMQVRFX1kgfHwgdHlwZSA9PSBUUkFO
U0xBVEUpOwotI2VuZGlmCiAgICAgfQogCiAgICAgTGVuZ3RoIG1feDsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDQwODgwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMDktMDItMTEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkwOAorCisgICAgICAgIEFkZGVk
IHRlc3QgZm9yIHBhcnNpbmcgM2QgZnVuY3Rpb25zIGluIHdlYmtpdC10cmFuc2Zvcm0KKworICAg
ICAgICAqIHRyYW5zZm9ybXMvM2Q6IEFkZGVkLgorICAgICAgICAqIHRyYW5zZm9ybXMvM2QvY3Nz
bWF0cml4LTNkLWludGVyZmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYW5z
Zm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54aHRtbDogQWRkZWQuCisKIDIwMDktMDIt
MTEgIFNjb3R0IFZpb2xldCAgPHNreUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KSW5kZXg6IExheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvY3NzbWF0cml4
LTNkLWludGVyZmFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJh
bnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMzIEBACitUaGlzIHRlc3QgZXhl
cmNpc2VzIHRoZSBDU1NNYXRyaXggM0QgaW50ZXJmYWNlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitDU1NNYXRyaXggY29uc3RydWN0b3JzCitQQVNTIGRlZmF1bHQgY29uc3RydWN0
b3IKK1BBU1Mgb2JqZWN0IGNvbnN0cnVjdG9yCitQQVNTIHN0cmluZyBjb25zdHJ1Y3RvcgorCitU
ZXN0IHRvU3RyaW5nCitQQVNTIGFbMF0gaXMgIm1hdHJpeDNkIgorUEFTUyBwYXJzZUZsb2F0KGEy
WzBdKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQoYTJbMV0pIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChh
MlsyXSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEyWzNdKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQo
YTJbNF0pIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChhMls1XSkgaXMgMQorUEFTUyBwYXJzZUZsb2F0
KGEyWzZdKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTJbN10pIGlzIDAKK1BBU1MgcGFyc2VGbG9h
dChhMls4XSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEyWzldKSBpcyAwCitQQVNTIHBhcnNlRmxv
YXQoYTJbMTBdKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQoYTJbMTFdKSBpcyAwCitQQVNTIHBhcnNl
RmxvYXQoYTJbMTJdKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTJbMTNdKSBpcyAwCitQQVNTIHBh
cnNlRmxvYXQoYTJbMTRdKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTNbMF0pIGlzIDEKK1BBU1Mg
YTNbMV0gaXMgIiIKKworVGVzdCBiYWQgaW5wdXQgdG8gc3RyaW5nIGNvbnN0cnVjdG9yCitQQVNT
IG5ldyBXZWJLaXRDU1NNYXRyaXgoImJhbmFuYSIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KKworVGVzdCBhdHRyaWJ1dGVzIG9uIGRlZmF1bHQg
bWF0cml4CitQQVNTIG0ubTExIGlzIDEKK1BBU1MgbS5tMTIgaXMgMAorUEFTUyBtLm0xMyBpcyAw
CitQQVNTIG0ubTE0IGlzIDAKK1BBU1MgbS5tMjEgaXMgMAorUEFTUyBtLm0yMiBpcyAxCitQQVNT
IG0ubTIzIGlzIDAKK1BBU1MgbS5tMjQgaXMgMAorUEFTUyBtLm0zMSBpcyAwCitQQVNTIG0ubTMy
IGlzIDAKK1BBU1MgbS5tMzMgaXMgMQorUEFTUyBtLm0zNCBpcyAwCitQQVNTIG0ubTQxIGlzIDAK
K1BBU1MgbS5tNDIgaXMgMAorUEFTUyBtLm00MyBpcyAwCitQQVNTIG0ubTQ0IGlzIDEKKworVGVz
dCBhdHRyaWJ1dGVzIG9uIGN1c3RvbSBtYXRyaXgKK1BBU1MgbS5tMTEgaXMgMTEKK1BBU1MgbS5t
MTIgaXMgMTIKK1BBU1MgbS5tMTMgaXMgMTMKK1BBU1MgbS5tMTQgaXMgMTQKK1BBU1MgbS5tMjEg
aXMgMjEKK1BBU1MgbS5tMjIgaXMgMjIKK1BBU1MgbS5tMjMgaXMgMjMKK1BBU1MgbS5tMjQgaXMg
MjQKK1BBU1MgbS5tMzEgaXMgMzEKK1BBU1MgbS5tMzIgaXMgMzIKK1BBU1MgbS5tMzMgaXMgMzMK
K1BBU1MgbS5tMzQgaXMgMzQKK1BBU1MgbS5tNDEgaXMgNDEKK1BBU1MgbS5tNDIgaXMgNDIKK1BB
U1MgbS5tNDMgaXMgNDMKK1BBU1MgbS5tNDQgaXMgNDQKKworVGVzdCBzZXRNYXRyaXhWYWx1ZSAt
IHNldCB0byBtYXRyaXgoKQorUEFTUyBtLm0xMSBpcyAxMQorUEFTUyBtLm0xMiBpcyAxMgorUEFT
UyBtLm0xMyBpcyAxMworUEFTUyBtLm0xNCBpcyAxNAorUEFTUyBtLm0yMSBpcyAyMQorUEFTUyBt
Lm0yMiBpcyAyMgorUEFTUyBtLm0yMyBpcyAyMworUEFTUyBtLm0yNCBpcyAyNAorUEFTUyBtLm0z
MSBpcyAzMQorUEFTUyBtLm0zMiBpcyAzMgorUEFTUyBtLm0zMyBpcyAzMworUEFTUyBtLm0zNCBp
cyAzNAorUEFTUyBtLm00MSBpcyA0MQorUEFTUyBtLm00MiBpcyA0MgorUEFTUyBtLm00MyBpcyA0
MworUEFTUyBtLm00NCBpcyA0NAorCitUZXN0IHNldE1hdHJpeFZhbHVlIC0gc2V0IHRvIHRyYW5z
bGF0ZSgxMHB4LCAyMHB4LCAzMHB4KSBzY2FsZSgyLCAzLCA0KQorUEFTUyBtLm0xMSBpcyAyCitQ
QVNTIG0ubTEyIGlzIDAKK1BBU1MgbS5tMTMgaXMgMAorUEFTUyBtLm0xNCBpcyAwCitQQVNTIG0u
bTIxIGlzIDAKK1BBU1MgbS5tMjIgaXMgMworUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0IGlz
IDAKK1BBU1MgbS5tMzEgaXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDQKK1BB
U1MgbS5tMzQgaXMgMAorUEFTUyBtLm00MSBpcyAxMAorUEFTUyBtLm00MiBpcyAyMAorUEFTUyBt
Lm00MyBpcyAzMAorUEFTUyBtLm00NCBpcyAxCisKK1Rlc3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZy
b20gc2V0TWF0cml4VmFsdWUKK1BBU1MgbS5zZXRNYXRyaXhWYWx1ZSgiYmFuYW5hIikgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBtLnNl
dE1hdHJpeFZhbHVlKCJ0cmFuc2xhdGUzZCgxMGVtLCAyMCUsIDQwKSIpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMi4KK1BBU1MgbS5zZXRNYXRyaXhW
YWx1ZSgidHJhbnNsYXRlM2QoMTBweCwgMjBweCwgMzBweCkgc2NhbGUzZCgpIikgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorCitUZXN0IG11bHRp
cGx5CitQQVNTIHBhcnNlRmxvYXQobTMubTExKSBpcyAyNTAKK1BBU1MgcGFyc2VGbG9hdChtMy5t
MTIpIGlzIDI2MAorUEFTUyBwYXJzZUZsb2F0KG0zLm0xMykgaXMgMjcwCitQQVNTIHBhcnNlRmxv
YXQobTMubTE0KSBpcyAyODAKK1BBU1MgcGFyc2VGbG9hdChtMy5tMjEpIGlzIDYxOAorUEFTUyBw
YXJzZUZsb2F0KG0zLm0yMikgaXMgNjQ0CitQQVNTIHBhcnNlRmxvYXQobTMubTIzKSBpcyA2NzAK
K1BBU1MgcGFyc2VGbG9hdChtMy5tMjQpIGlzIDY5NgorUEFTUyBwYXJzZUZsb2F0KG0zLm0zMSkg
aXMgOTg2CitQQVNTIHBhcnNlRmxvYXQobTMubTMyKSBpcyAxMDI4CitQQVNTIHBhcnNlRmxvYXQo
bTMubTMzKSBpcyAxMDcwCitQQVNTIHBhcnNlRmxvYXQobTMubTM0KSBpcyAxMTEyCitQQVNTIHBh
cnNlRmxvYXQobTMubTQxKSBpcyAxMzU0CitQQVNTIHBhcnNlRmxvYXQobTMubTQyKSBpcyAxNDEy
CitQQVNTIHBhcnNlRmxvYXQobTMubTQzKSBpcyAxNDcwCitQQVNTIHBhcnNlRmxvYXQobTMubTQ0
KSBpcyAxNTI4CisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIG11bHRpcGx5CitQQVNTIHBhcnNlRmxv
YXQobS5tMTEpIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChtLm0xMikgaXMgMgorUEFTUyBwYXJzZUZs
b2F0KG0ubTEzKSBpcyAzCitQQVNTIHBhcnNlRmxvYXQobS5tMTQpIGlzIDQKK1BBU1MgcGFyc2VG
bG9hdChtLm0yMSkgaXMgNQorUEFTUyBwYXJzZUZsb2F0KG0ubTIyKSBpcyA2CitQQVNTIHBhcnNl
RmxvYXQobS5tMjMpIGlzIDcKK1BBU1MgcGFyc2VGbG9hdChtLm0yNCkgaXMgOAorUEFTUyBwYXJz
ZUZsb2F0KG0ubTMxKSBpcyA5CitQQVNTIHBhcnNlRmxvYXQobS5tMzIpIGlzIDEwCitQQVNTIHBh
cnNlRmxvYXQobS5tMzMpIGlzIDExCitQQVNTIHBhcnNlRmxvYXQobS5tMzQpIGlzIDEyCitQQVNT
IHBhcnNlRmxvYXQobS5tNDEpIGlzIDEzCitQQVNTIHBhcnNlRmxvYXQobS5tNDIpIGlzIDE0CitQ
QVNTIHBhcnNlRmxvYXQobS5tNDMpIGlzIDE1CitQQVNTIHBhcnNlRmxvYXQobS5tNDQpIGlzIDE2
CisKK1Rlc3QgaW52ZXJzZQorUEFTUyBwYXJzZUZsb2F0KG0yLm0xMSkgaXMgMC41CitQQVNTIHBh
cnNlRmxvYXQobTIubTEyKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTEzKSBpcyAwCitQQVNT
IHBhcnNlRmxvYXQobTIubTE0KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTIxKSBpcyAwCitQ
QVNTIHBhcnNlRmxvYXQobTIubTIyKSBpcyAwLjUKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjMpIGlz
IDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMzEp
IGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMzIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5t
MzMpIGlzIDAuNQorUEFTUyBwYXJzZUZsb2F0KG0yLm0zNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0
KG0yLm00MSkgaXMgLTUKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDIpIGlzIC0xMAorUEFTUyBwYXJz
ZUZsb2F0KG0yLm00MykgaXMgLTE1CitQQVNTIHBhcnNlRmxvYXQobTIubTQ0KSBpcyAxCisKK1Rl
c3QgaW1tdXRhYmlsaXR5IG9mIGludmVyc2UKK1BBU1MgcGFyc2VGbG9hdChtLm0xMSkgaXMgMgor
UEFTUyBwYXJzZUZsb2F0KG0ubTEyKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tMTMpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtLm0xNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTIxKSBpcyAw
CitQQVNTIHBhcnNlRmxvYXQobS5tMjIpIGlzIDIKK1BBU1MgcGFyc2VGbG9hdChtLm0yMykgaXMg
MAorUEFTUyBwYXJzZUZsb2F0KG0ubTI0KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tMzEpIGlz
IDAKK1BBU1MgcGFyc2VGbG9hdChtLm0zMikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTMzKSBp
cyAyCitQQVNTIHBhcnNlRmxvYXQobS5tMzQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm00MSkg
aXMgMTAKK1BBU1MgcGFyc2VGbG9hdChtLm00MikgaXMgMjAKK1BBU1MgcGFyc2VGbG9hdChtLm00
MykgaXMgMzAKK1BBU1MgcGFyc2VGbG9hdChtLm00NCkgaXMgMQorCitUZXN0IHRocm93aW5nIGV4
Y2VwdGlvbiBmcm9tIGludmVyc2UKK1BBU1MgbS5pbnZlcnNlKCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBOT1RfU1VQUE9SVEVEX0VSUjogRE9NIEV4Y2VwdGlvbiA5LgorCitUZXN0IHRyYW5zbGF0
ZQorUEFTUyBtMi5tMTEgaXMgMQorUEFTUyBtMi5tMTIgaXMgMAorUEFTUyBtMi5tMTMgaXMgMAor
UEFTUyBtMi5tMTQgaXMgMAorUEFTUyBtMi5tMjEgaXMgMAorUEFTUyBtMi5tMjIgaXMgMQorUEFT
UyBtMi5tMjMgaXMgMAorUEFTUyBtMi5tMjQgaXMgMAorUEFTUyBtMi5tMzEgaXMgMAorUEFTUyBt
Mi5tMzIgaXMgMAorUEFTUyBtMi5tMzMgaXMgMQorUEFTUyBtMi5tMzQgaXMgMAorUEFTUyBtMi5t
NDEgaXMgMTAKK1BBU1MgbTIubTQyIGlzIDIwCitQQVNTIG0yLm00MyBpcyAzMAorUEFTUyBtMi5t
NDQgaXMgMQorCitUZXN0IGltbXV0YWJpbGl0eSBvZiB0cmFuc2xhdGUKK1BBU1MgbS5tMTEgaXMg
MQorUEFTUyBtLm0xMiBpcyAwCitQQVNTIG0ubTEzIGlzIDAKK1BBU1MgbS5tMTQgaXMgMAorUEFT
UyBtLm0yMSBpcyAwCitQQVNTIG0ubTIyIGlzIDEKK1BBU1MgbS5tMjMgaXMgMAorUEFTUyBtLm0y
NCBpcyAwCitQQVNTIG0ubTMxIGlzIDAKK1BBU1MgbS5tMzIgaXMgMAorUEFTUyBtLm0zMyBpcyAx
CitQQVNTIG0ubTM0IGlzIDAKK1BBU1MgbS5tNDEgaXMgMAorUEFTUyBtLm00MiBpcyAwCitQQVNT
IG0ubTQzIGlzIDAKK1BBU1MgbS5tNDQgaXMgMQorCitUZXN0IHNjYWxlCitQQVNTIG0yLm0xMSBp
cyAxMAorUEFTUyBtMi5tMTIgaXMgMAorUEFTUyBtMi5tMTMgaXMgMAorUEFTUyBtMi5tMTQgaXMg
MAorUEFTUyBtMi5tMjEgaXMgMAorUEFTUyBtMi5tMjIgaXMgMjAKK1BBU1MgbTIubTIzIGlzIDAK
K1BBU1MgbTIubTI0IGlzIDAKK1BBU1MgbTIubTMxIGlzIDAKK1BBU1MgbTIubTMyIGlzIDAKK1BB
U1MgbTIubTMzIGlzIDMwCitQQVNTIG0yLm0zNCBpcyAwCitQQVNTIG0yLm00MSBpcyAwCitQQVNT
IG0yLm00MiBpcyAwCitQQVNTIG0yLm00MyBpcyAwCitQQVNTIG0yLm00NCBpcyAxCisKK1Rlc3Qg
aW1tdXRhYmlsaXR5IG9mIHNjYWxlCitQQVNTIG0ubTExIGlzIDEKK1BBU1MgbS5tMTIgaXMgMAor
UEFTUyBtLm0xMyBpcyAwCitQQVNTIG0ubTE0IGlzIDAKK1BBU1MgbS5tMjEgaXMgMAorUEFTUyBt
Lm0yMiBpcyAxCitQQVNTIG0ubTIzIGlzIDAKK1BBU1MgbS5tMjQgaXMgMAorUEFTUyBtLm0zMSBp
cyAwCitQQVNTIG0ubTMyIGlzIDAKK1BBU1MgbS5tMzMgaXMgMQorUEFTUyBtLm0zNCBpcyAwCitQ
QVNTIG0ubTQxIGlzIDAKK1BBU1MgbS5tNDIgaXMgMAorUEFTUyBtLm00MyBpcyAwCitQQVNTIG0u
bTQ0IGlzIDEKKworVGVzdCByb3RhdGUKK1BBU1MgcGFyc2VGbG9hdChtMi5tMTEudG9QcmVjaXNp
b24oNikpIGlzIDAuODEzNzk4CitQQVNTIHBhcnNlRmxvYXQobTIubTEyLnRvUHJlY2lzaW9uKDYp
KSBpcyAwLjQ2OTg0NgorUEFTUyBwYXJzZUZsb2F0KG0yLm0xMy50b1ByZWNpc2lvbig2KSkgaXMg
LTAuMzQyMDIKK1BBU1MgcGFyc2VGbG9hdChtMi5tMTQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BB
U1MgcGFyc2VGbG9hdChtMi5tMjEudG9QcmVjaXNpb24oNikpIGlzIC0wLjQ0MDk3CitQQVNTIHBh
cnNlRmxvYXQobTIubTIyLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjg4MjU2NAorUEFTUyBwYXJzZUZs
b2F0KG0yLm0yMy50b1ByZWNpc2lvbig2KSkgaXMgMC4xNjMxNzYKK1BBU1MgcGFyc2VGbG9hdCht
Mi5tMjQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMzEudG9QcmVj
aXNpb24oNikpIGlzIDAuMzc4NTIyCitQQVNTIHBhcnNlRmxvYXQobTIubTMyLnRvUHJlY2lzaW9u
KDYpKSBpcyAwLjAxODAyODMKK1BBU1MgcGFyc2VGbG9hdChtMi5tMzMudG9QcmVjaXNpb24oNikp
IGlzIDAuOTI1NDE3CitQQVNTIHBhcnNlRmxvYXQobTIubTM0LnRvUHJlY2lzaW9uKDYpKSBpcyAw
CitQQVNTIHBhcnNlRmxvYXQobTIubTQxLnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNl
RmxvYXQobTIubTQyLnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTQz
LnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTQ0LnRvUHJlY2lzaW9u
KDYpKSBpcyAxCisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIHJvdGF0ZQorUEFTUyBtLm0xMSBpcyAx
CitQQVNTIG0ubTEyIGlzIDAKK1BBU1MgbS5tMTMgaXMgMAorUEFTUyBtLm0xNCBpcyAwCitQQVNT
IG0ubTIxIGlzIDAKK1BBU1MgbS5tMjIgaXMgMQorUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0
IGlzIDAKK1BBU1MgbS5tMzEgaXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDEK
K1BBU1MgbS5tMzQgaXMgMAorUEFTUyBtLm00MSBpcyAwCitQQVNTIG0ubTQyIGlzIDAKK1BBU1Mg
bS5tNDMgaXMgMAorUEFTUyBtLm00NCBpcyAxCisKK1Rlc3Qgcm90YXRlQXhpc0FuZ2xlCitQQVNT
IHBhcnNlRmxvYXQobTIubTExLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjgwNDczOAorUEFTUyBwYXJz
ZUZsb2F0KG0yLm0xMi50b1ByZWNpc2lvbig2KSkgaXMgMC41MDU4NzkKK1BBU1MgcGFyc2VGbG9h
dChtMi5tMTMudG9QcmVjaXNpb24oNikpIGlzIC0wLjMxMDYxNworUEFTUyBwYXJzZUZsb2F0KG0y
Lm0xNC50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0yMS50b1ByZWNp
c2lvbig2KSkgaXMgLTAuMzEwNjE3CitQQVNTIHBhcnNlRmxvYXQobTIubTIyLnRvUHJlY2lzaW9u
KDYpKSBpcyAwLjgwNDczOAorUEFTUyBwYXJzZUZsb2F0KG0yLm0yMy50b1ByZWNpc2lvbig2KSkg
aXMgMC41MDU4NzkKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjQudG9QcmVjaXNpb24oNikpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtMi5tMzEudG9QcmVjaXNpb24oNikpIGlzIDAuNTA1ODc5CitQQVNT
IHBhcnNlRmxvYXQobTIubTMyLnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4zMTA2MTcKK1BBU1MgcGFy
c2VGbG9hdChtMi5tMzMudG9QcmVjaXNpb24oNikpIGlzIDAuODA0NzM4CitQQVNTIHBhcnNlRmxv
YXQobTIubTM0LnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTQxLnRv
UHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTQyLnRvUHJlY2lzaW9uKDYp
KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTQzLnRvUHJlY2lzaW9uKDYpKSBpcyAwCitQQVNT
IHBhcnNlRmxvYXQobTIubTQ0LnRvUHJlY2lzaW9uKDYpKSBpcyAxCisKK1Rlc3QgaW1tdXRhYmls
aXR5IG9mIHJvdGF0ZUF4aXNBbmdsZQorUEFTUyBtLm0xMSBpcyAxCitQQVNTIG0ubTEyIGlzIDAK
K1BBU1MgbS5tMTMgaXMgMAorUEFTUyBtLm0xNCBpcyAwCitQQVNTIG0ubTIxIGlzIDAKK1BBU1Mg
bS5tMjIgaXMgMQorUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0IGlzIDAKK1BBU1MgbS5tMzEg
aXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDEKK1BBU1MgbS5tMzQgaXMgMAor
UEFTUyBtLm00MSBpcyAwCitQQVNTIG0ubTQyIGlzIDAKK1BBU1MgbS5tNDMgaXMgMAorUEFTUyBt
Lm00NCBpcyAxCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0zZC1pbnRl
cmZhY2UueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9jc3Nt
YXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdHJh
bnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQxMSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwi
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBleGVyY2lzZXMgdGhlIENTU01hdHJpeCAz
RCBpbnRlcmZhY2UiKTsKKworZGVidWcoIiIpOworZGVidWcoIkNTU01hdHJpeCBjb25zdHJ1Y3Rv
cnMiKTsKKwordmFyIG0gPSBudWxsOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK2lmICht
KQorICB0ZXN0UGFzc2VkKCJkZWZhdWx0IGNvbnN0cnVjdG9yIik7CitlbHNlCisgIHRlc3RGYWls
ZWQoImRlZmF1bHQgY29uc3RydWN0b3IiKTsKKwordmFyIG0yID0gbmV3IFdlYktpdENTU01hdHJp
eChtKTsKK2lmIChtMikKKyAgdGVzdFBhc3NlZCgib2JqZWN0IGNvbnN0cnVjdG9yIik7CitlbHNl
CisgIHRlc3RGYWlsZWQoIm9iamVjdCBjb25zdHJ1Y3RvciIpOworCittID0gbmV3IFdlYktpdENT
U01hdHJpeCgibWF0cml4M2QoMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwg
MCwgMCwgMSkiKTsKK2lmIChtKQorICB0ZXN0UGFzc2VkKCJzdHJpbmcgY29uc3RydWN0b3IiKTsK
K2Vsc2UKKyAgdGVzdEZhaWxlZCgic3RyaW5nIGNvbnN0cnVjdG9yIik7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0IHRvU3RyaW5nIik7Cit2YXIgbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoIm1h
dHJpeDNkKDEsIDAsIDAsIDEsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEpIik7
Cit2YXIgcyA9IG0udG9TdHJpbmcoKTsKK3ZhciBhID0gcy5zcGxpdCgnKCcpOworc2hvdWxkQmUo
J2FbMF0nLCAnIm1hdHJpeDNkIicpOwordmFyIGEyID0gYVsxXS5zcGxpdCgnLCcpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQoYTJbMF0pJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzFd
KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChhMlsyXSknLCAnMCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQoYTJbM10pJywgJzEnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzRdKScs
ICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChhMls1XSknLCAnMScpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQoYTJbNl0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzddKScsICcw
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChhMls4XSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNl
RmxvYXQoYTJbOV0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzEwXSknLCAnMScp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbMTFdKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChhMlsxMl0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzEzXSknLCAnMCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbMTRdKScsICcwJyk7Cit2YXIgYTMgPSBhMlsxNV0u
c3BsaXQoIikiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEzWzBdKScsICcxJyk7CitzaG91bGRC
ZSgnYTNbMV0nLCAnIiInKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgYmFkIGlucHV0IHRv
IHN0cmluZyBjb25zdHJ1Y3RvciIpOworc2hvdWxkVGhyb3coJ25ldyBXZWJLaXRDU1NNYXRyaXgo
ImJhbmFuYSIpJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGF0dHJpYnV0ZXMgb24gZGVm
YXVsdCBtYXRyaXgiKTsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7CitzaG91bGRCZSgnbS5t
MTEnLCAnMScpOworc2hvdWxkQmUoJ20ubTEyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xMycsICcw
Jyk7CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIxJywgJzAnKTsKK3No
b3VsZEJlKCdtLm0yMicsICcxJyk7CitzaG91bGRCZSgnbS5tMjMnLCAnMCcpOworc2hvdWxkQmUo
J20ubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMScsICcwJyk7CitzaG91bGRCZSgnbS5tMzIn
LCAnMCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0zNCcsICcwJyk7
CitzaG91bGRCZSgnbS5tNDEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQyJywgJzAnKTsKK3Nob3Vs
ZEJlKCdtLm00MycsICcwJyk7CitzaG91bGRCZSgnbS5tNDQnLCAnMScpOworCitkZWJ1ZygiIik7
CitkZWJ1ZygiVGVzdCBhdHRyaWJ1dGVzIG9uIGN1c3RvbSBtYXRyaXgiKTsKK20gPSBuZXcgV2Vi
S2l0Q1NTTWF0cml4KCJtYXRyaXgzZCgxMSwgMTIsIDEzLCAxNCwgMjEsIDIyLCAyMywgMjQsIDMx
LCAzMiwgMzMsIDM0LCA0MSwgNDIsIDQzLCA0NCkiKTsKK3Nob3VsZEJlKCdtLm0xMScsICcxMScp
Oworc2hvdWxkQmUoJ20ubTEyJywgJzEyJyk7CitzaG91bGRCZSgnbS5tMTMnLCAnMTMnKTsKK3No
b3VsZEJlKCdtLm0xNCcsICcxNCcpOworc2hvdWxkQmUoJ20ubTIxJywgJzIxJyk7CitzaG91bGRC
ZSgnbS5tMjInLCAnMjInKTsKK3Nob3VsZEJlKCdtLm0yMycsICcyMycpOworc2hvdWxkQmUoJ20u
bTI0JywgJzI0Jyk7CitzaG91bGRCZSgnbS5tMzEnLCAnMzEnKTsKK3Nob3VsZEJlKCdtLm0zMics
ICczMicpOworc2hvdWxkQmUoJ20ubTMzJywgJzMzJyk7CitzaG91bGRCZSgnbS5tMzQnLCAnMzQn
KTsKK3Nob3VsZEJlKCdtLm00MScsICc0MScpOworc2hvdWxkQmUoJ20ubTQyJywgJzQyJyk7Citz
aG91bGRCZSgnbS5tNDMnLCAnNDMnKTsKK3Nob3VsZEJlKCdtLm00NCcsICc0NCcpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCBzZXRNYXRyaXhWYWx1ZSAtIHNldCB0byBtYXRyaXgoKSIpOwor
bSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK20uc2V0TWF0cml4VmFsdWUoIm1hdHJpeDNkKDEx
LCAxMiwgMTMsIDE0LCAyMSwgMjIsIDIzLCAyNCwgMzEsIDMyLCAzMywgMzQsIDQxLCA0MiwgNDMs
IDQ0KSIpOworc2hvdWxkQmUoJ20ubTExJywgJzExJyk7CitzaG91bGRCZSgnbS5tMTInLCAnMTIn
KTsKK3Nob3VsZEJlKCdtLm0xMycsICcxMycpOworc2hvdWxkQmUoJ20ubTE0JywgJzE0Jyk7Citz
aG91bGRCZSgnbS5tMjEnLCAnMjEnKTsKK3Nob3VsZEJlKCdtLm0yMicsICcyMicpOworc2hvdWxk
QmUoJ20ubTIzJywgJzIzJyk7CitzaG91bGRCZSgnbS5tMjQnLCAnMjQnKTsKK3Nob3VsZEJlKCdt
Lm0zMScsICczMScpOworc2hvdWxkQmUoJ20ubTMyJywgJzMyJyk7CitzaG91bGRCZSgnbS5tMzMn
LCAnMzMnKTsKK3Nob3VsZEJlKCdtLm0zNCcsICczNCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzQx
Jyk7CitzaG91bGRCZSgnbS5tNDInLCAnNDInKTsKK3Nob3VsZEJlKCdtLm00MycsICc0MycpOwor
c2hvdWxkQmUoJ20ubTQ0JywgJzQ0Jyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHNldE1h
dHJpeFZhbHVlIC0gc2V0IHRvIHRyYW5zbGF0ZSgxMHB4LCAyMHB4LCAzMHB4KSBzY2FsZSgyLCAz
LCA0KSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK20uc2V0TWF0cml4VmFsdWUoInRy
YW5zbGF0ZTNkKDEwcHgsIDIwcHgsIDMwcHgpIHNjYWxlM2QoMiwgMywgNCkiKTsKK3Nob3VsZEJl
KCdtLm0xMScsICcyJyk7CitzaG91bGRCZSgnbS5tMTInLCAnMCcpOworc2hvdWxkQmUoJ20ubTEz
JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMCcp
Oworc2hvdWxkQmUoJ20ubTIyJywgJzMnKTsKK3Nob3VsZEJlKCdtLm0yMycsICcwJyk7CitzaG91
bGRCZSgnbS5tMjQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMxJywgJzAnKTsKK3Nob3VsZEJlKCdt
Lm0zMicsICcwJyk7CitzaG91bGRCZSgnbS5tMzMnLCAnNCcpOworc2hvdWxkQmUoJ20ubTM0Jywg
JzAnKTsKK3Nob3VsZEJlKCdtLm00MScsICcxMCcpOworc2hvdWxkQmUoJ20ubTQyJywgJzIwJyk7
CitzaG91bGRCZSgnbS5tNDMnLCAnMzAnKTsKK3Nob3VsZEJlKCdtLm00NCcsICcxJyk7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0IHRocm93aW5nIGV4Y2VwdGlvbiBmcm9tIHNldE1hdHJpeFZh
bHVlIik7CitzaG91bGRUaHJvdygnbS5zZXRNYXRyaXhWYWx1ZSgiYmFuYW5hIiknKTsKK3Nob3Vs
ZFRocm93KCdtLnNldE1hdHJpeFZhbHVlKCJ0cmFuc2xhdGUzZCgxMGVtLCAyMCUsIDQwKSIpJyk7
CitzaG91bGRUaHJvdygnbS5zZXRNYXRyaXhWYWx1ZSgidHJhbnNsYXRlM2QoMTBweCwgMjBweCwg
MzBweCkgc2NhbGUzZCgpIiknKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgbXVsdGlwbHki
KTsKK20gPSAgbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4M2QoIDEsICAyLCAgMywgIDQsICA1
LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYpIik7CittMiA9IG5l
dyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeDNkKDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAy
NCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyKSIpOwordmFyIG0zID0gbS5tdWx0aXBs
eShtMik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMTEpJywgJzI1MCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTMubTEyKScsICcyNjAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0x
MyknLCAnMjcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMTQpJywgJzI4MCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobTMubTIxKScsICc2MTgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0zLm0yMiknLCAnNjQ0Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMjMpJywgJzY3MCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTI0KScsICc2OTYnKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0zLm0zMSknLCAnOTg2Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMy5tMzIpJywg
JzEwMjgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0zMyknLCAnMTA3MCcpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTMubTM0KScsICcxMTEyJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
My5tNDEpJywgJzEzNTQnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm00MiknLCAnMTQxMicp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTQzKScsICcxNDcwJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMy5tNDQpJywgJzE1MjgnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1t
dXRhYmlsaXR5IG9mIG11bHRpcGx5Iik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xMSknLCAn
MScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTIpJywgJzInKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0ubTEzKScsICczJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xNCknLCAnNCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjEpJywgJzUnKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KG0ubTIyKScsICc2Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yMyknLCAnNycpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjQpJywgJzgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0ubTMxKScsICc5Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMiknLCAnMTAnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0ubTMzKScsICcxMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5tMzQpJywgJzEyJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00MSknLCAnMTMnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQyKScsICcxNCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5tNDMpJywgJzE1Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00NCknLCAnMTYnKTsKKwor
ZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW52ZXJzZSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRy
aXgoIm1hdHJpeDNkKDIsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDAsIDIsIDAsIDEwLCAyMCwg
MzAsIDEpIik7CittMiA9IG0uaW52ZXJzZSgpOworCitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5t
MTEpJywgJzAuNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTEyKScsICcwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMi5tMTMpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0y
Lm0xNCknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTIxKScsICcwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMi5tMjIpJywgJzAuNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTIubTIzKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjQpJywgJzAnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTIubTMyKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzMpJywgJzAuNScpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTM0KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtMi5tNDEpJywgJy01Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tNDIpJywgJy0xMCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQzKScsICctMTUnKTsKK3Nob3VsZEJlKCdwYXJz
ZUZsb2F0KG0yLm00NCknLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFi
aWxpdHkgb2YgaW52ZXJzZSIpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTEpJywgJzInKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTEyKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChtLm0xMyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMTQpJywgJzAnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIxKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdCht
Lm0yMiknLCAnMicpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMjMpJywgJzAnKTsKK3Nob3Vs
ZEJlKCdwYXJzZUZsb2F0KG0ubTI0KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0z
MSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzIpJywgJzAnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0ubTMzKScsICcyJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zNCkn
LCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDEpJywgJzEwJyk7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtLm00MiknLCAnMjAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQzKScs
ICczMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDQpJywgJzEnKTsKKworZGVidWcoIiIp
OworZGVidWcoIlRlc3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZyb20gaW52ZXJzZSIpOworbSA9IG5l
dyBXZWJLaXRDU1NNYXRyaXgoIm1hdHJpeDNkKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDApIik7IC8vIG5vdCBpbnZlcnRpYmxlCitzaG91bGRUaHJvdygnbS5p
bnZlcnNlKCknKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgdHJhbnNsYXRlIik7CittID0g
bmV3IFdlYktpdENTU01hdHJpeCgpOwordmFyIG0yID0gbS50cmFuc2xhdGUoMTAsIDIwLCAzMCk7
CitzaG91bGRCZSgnbTIubTExJywgJzEnKTsKK3Nob3VsZEJlKCdtMi5tMTInLCAnMCcpOworc2hv
dWxkQmUoJ20yLm0xMycsICcwJyk7CitzaG91bGRCZSgnbTIubTE0JywgJzAnKTsKK3Nob3VsZEJl
KCdtMi5tMjEnLCAnMCcpOworc2hvdWxkQmUoJ20yLm0yMicsICcxJyk7CitzaG91bGRCZSgnbTIu
bTIzJywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tMjQnLCAnMCcpOworc2hvdWxkQmUoJ20yLm0zMScs
ICcwJyk7CitzaG91bGRCZSgnbTIubTMyJywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tMzMnLCAnMScp
Oworc2hvdWxkQmUoJ20yLm0zNCcsICcwJyk7CitzaG91bGRCZSgnbTIubTQxJywgJzEwJyk7Citz
aG91bGRCZSgnbTIubTQyJywgJzIwJyk7CitzaG91bGRCZSgnbTIubTQzJywgJzMwJyk7CitzaG91
bGRCZSgnbTIubTQ0JywgJzEnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmls
aXR5IG9mIHRyYW5zbGF0ZSIpOworc2hvdWxkQmUoJ20ubTExJywgJzEnKTsKK3Nob3VsZEJlKCdt
Lm0xMicsICcwJyk7CitzaG91bGRCZSgnbS5tMTMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTE0Jywg
JzAnKTsKK3Nob3VsZEJlKCdtLm0yMScsICcwJyk7CitzaG91bGRCZSgnbS5tMjInLCAnMScpOwor
c2hvdWxkQmUoJ20ubTIzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yNCcsICcwJyk7CitzaG91bGRC
ZSgnbS5tMzEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0z
MycsICcxJyk7CitzaG91bGRCZSgnbS5tMzQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQxJywgJzAn
KTsKK3Nob3VsZEJlKCdtLm00MicsICcwJyk7CitzaG91bGRCZSgnbS5tNDMnLCAnMCcpOworc2hv
dWxkQmUoJ20ubTQ0JywgJzEnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3Qgc2NhbGUiKTsK
K20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4KCk7CittMiA9IG0uc2NhbGUoMTAsIDIwLCAzMCk7Citz
aG91bGRCZSgnbTIubTExJywgJzEwJyk7CitzaG91bGRCZSgnbTIubTEyJywgJzAnKTsKK3Nob3Vs
ZEJlKCdtMi5tMTMnLCAnMCcpOworc2hvdWxkQmUoJ20yLm0xNCcsICcwJyk7CitzaG91bGRCZSgn
bTIubTIxJywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tMjInLCAnMjAnKTsKK3Nob3VsZEJlKCdtMi5t
MjMnLCAnMCcpOworc2hvdWxkQmUoJ20yLm0yNCcsICcwJyk7CitzaG91bGRCZSgnbTIubTMxJywg
JzAnKTsKK3Nob3VsZEJlKCdtMi5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20yLm0zMycsICczMCcp
Oworc2hvdWxkQmUoJ20yLm0zNCcsICcwJyk7CitzaG91bGRCZSgnbTIubTQxJywgJzAnKTsKK3No
b3VsZEJlKCdtMi5tNDInLCAnMCcpOworc2hvdWxkQmUoJ20yLm00MycsICcwJyk7CitzaG91bGRC
ZSgnbTIubTQ0JywgJzEnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgaW1tdXRhYmlsaXR5
IG9mIHNjYWxlIik7CitzaG91bGRCZSgnbS5tMTEnLCAnMScpOworc2hvdWxkQmUoJ20ubTEyJywg
JzAnKTsKK3Nob3VsZEJlKCdtLm0xMycsICcwJyk7CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOwor
c2hvdWxkQmUoJ20ubTIxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMicsICcxJyk7CitzaG91bGRC
ZSgnbS5tMjMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0z
MScsICcwJyk7CitzaG91bGRCZSgnbS5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzEn
KTsKK3Nob3VsZEJlKCdtLm0zNCcsICcwJyk7CitzaG91bGRCZSgnbS5tNDEnLCAnMCcpOworc2hv
dWxkQmUoJ20ubTQyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MycsICcwJyk7CitzaG91bGRCZSgn
bS5tNDQnLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCByb3RhdGUiKTsKK20gPSBu
ZXcgV2ViS2l0Q1NTTWF0cml4KCk7CittMiA9IG0ucm90YXRlKDEwLCAyMCwgMzApOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTIubTExLnRvUHJlY2lzaW9uKDYpKScsICcwLjgxMzc5OCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobTIubTEyLnRvUHJlY2lzaW9uKDYpKScsICcwLjQ2OTg0NicpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTEzLnRvUHJlY2lzaW9uKDYpKScsICctMC4zNDIwMicp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTE0LnRvUHJlY2lzaW9uKDYpKScsICcwJyk7Citz
aG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjEudG9QcmVjaXNpb24oNikpJywgJy0wLjQ0MDk3Jyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjIudG9QcmVjaXNpb24oNikpJywgJzAuODgyNTY0
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjMudG9QcmVjaXNpb24oNikpJywgJzAuMTYz
MTc2Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjQudG9QcmVjaXNpb24oNikpJywgJzAn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMS50b1ByZWNpc2lvbig2KSknLCAnMC4zNzg1
MjInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMi50b1ByZWNpc2lvbig2KSknLCAnMC4w
MTgwMjgzJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzMudG9QcmVjaXNpb24oNikpJywg
JzAuOTI1NDE3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzQudG9QcmVjaXNpb24oNikp
JywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00MS50b1ByZWNpc2lvbig2KSknLCAn
MCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQyLnRvUHJlY2lzaW9uKDYpKScsICcwJyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tNDMudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00NC50b1ByZWNpc2lvbig2KSknLCAnMScpOworCitkZWJ1
ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Ygcm90YXRlIik7CitzaG91bGRCZSgn
bS5tMTEnLCAnMScpOworc2hvdWxkQmUoJ20ubTEyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xMycs
ICcwJyk7CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIxJywgJzAnKTsK
K3Nob3VsZEJlKCdtLm0yMicsICcxJyk7CitzaG91bGRCZSgnbS5tMjMnLCAnMCcpOworc2hvdWxk
QmUoJ20ubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMScsICcwJyk7CitzaG91bGRCZSgnbS5t
MzInLCAnMCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0zNCcsICcw
Jyk7CitzaG91bGRCZSgnbS5tNDEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTQyJywgJzAnKTsKK3No
b3VsZEJlKCdtLm00MycsICcwJyk7CitzaG91bGRCZSgnbS5tNDQnLCAnMScpOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygiVGVzdCByb3RhdGVBeGlzQW5nbGUiKTsKK20gPSBuZXcgV2ViS2l0Q1NTTWF0
cml4KCk7CittMiA9IG0ucm90YXRlQXhpc0FuZ2xlKDAuNzA3LCAwLjcwNywgMC43MDcsIDQ1KTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0xMS50b1ByZWNpc2lvbig2KSknLCAnMC44MDQ3Mzgn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0xMi50b1ByZWNpc2lvbig2KSknLCAnMC41MDU4
NzknKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0xMy50b1ByZWNpc2lvbig2KSknLCAnLTAu
MzEwNjE3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMTQudG9QcmVjaXNpb24oNikpJywg
JzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yMS50b1ByZWNpc2lvbig2KSknLCAnLTAu
MzEwNjE3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjIudG9QcmVjaXNpb24oNikpJywg
JzAuODA0NzM4Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjMudG9QcmVjaXNpb24oNikp
JywgJzAuNTA1ODc5Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjQudG9QcmVjaXNpb24o
NikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMS50b1ByZWNpc2lvbig2KSkn
LCAnMC41MDU4NzknKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMi50b1ByZWNpc2lvbig2
KSknLCAnLTAuMzEwNjE3Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzMudG9QcmVjaXNp
b24oNikpJywgJzAuODA0NzM4Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzQudG9QcmVj
aXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00MS50b1ByZWNpc2lv
big2KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQyLnRvUHJlY2lzaW9uKDYp
KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tNDMudG9QcmVjaXNpb24oNikpJywg
JzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00NC50b1ByZWNpc2lvbig2KSknLCAnMScp
OworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Ygcm90YXRlQXhpc0Fu
Z2xlIik7CitzaG91bGRCZSgnbS5tMTEnLCAnMScpOworc2hvdWxkQmUoJ20ubTEyJywgJzAnKTsK
K3Nob3VsZEJlKCdtLm0xMycsICcwJyk7CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOworc2hvdWxk
QmUoJ20ubTIxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMicsICcxJyk7CitzaG91bGRCZSgnbS5t
MjMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMScsICcw
Jyk7CitzaG91bGRCZSgnbS5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzEnKTsKK3No
b3VsZEJlKCdtLm0zNCcsICcwJyk7CitzaG91bGRCZSgnbS5tNDEnLCAnMCcpOworc2hvdWxkQmUo
J20ubTQyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MycsICcwJyk7CitzaG91bGRCZSgnbS5tNDQn
LCAnMScpOworCitkZWJ1ZygiIik7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="13372"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27609</attachid>
            <date>2009-02-12 10:34:21 -0800</date>
            <delta_ts>2009-02-12 12:57:37 -0800</delta_ts>
            <desc>replacement patch</desc>
            <filename>23908.patch</filename>
            <type>text/plain</type>
            <size>88856</size>
            <attacher name="Chris Marrin">cmarrin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDkxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMDktMDItMTIgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkwOAorCisgICAgICAgIEFk
ZGVkIHBhcnNpbmcgb2YgM2QgdHJhbnNmb3JtIGZ1bmN0aW9ucyBhbmQgcHJvcGVydGllcworICAg
ICAgICAocGVyc3BlY3RpdmUsIHBlcnNwZWN0aXZlLW9yaWdpbiwgdHJhbnNmb3JtLXN0eWxlLTNk
LCAKKyAgICAgICAgYW5kIGJhY2tmYWNlLXZpc2liaWxpdHkpLiAgIAorCisgICAgICAgIFRlc3Q6
IHRyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54aHRtbAorCisgICAgICAgICog
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjop
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdpblNo
b3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25JbmZvOjpUcmFu
c2Zvcm1PcGVyYXRpb25JbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybU9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUGVyc3BlY3RpdmVPcmln
aW4pOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRU
eXBlTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9M
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxZUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6OmNzc1RleHQpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Oik6CisgICAgICAgICog
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OlJvdGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9T
Y2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb246OlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uOjppczNET3BlcmF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM6OmhhczNET3BlcmF0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24pOgorCiAyMDA5LTAyLTEyICBEaW1pdHJpIEdsYXprb3Yg
IDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0YXRpYyBjb25zdCBp
bnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bk5hbWUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2UsCisgICAgQ1NTUHJvcGVydHlXZWJraXRCYWNr
ZmFjZVZpc2liaWxpdHksCiAgICAgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCwKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsCiAgICAgQ1NTUHJvcGVydHlX
ZWJraXRCYWNrZ3JvdW5kT3JpZ2luLApAQCAtMTg5LDYgKzE5MCw4IEBAIHN0YXRpYyBjb25zdCBp
bnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmln
aW4sCiAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwKICAgICBDU1NQcm9wZXJ0eVdlYmtp
dE5ic3BNb2RlLAorICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmUsCisgICAgQ1NTUHJv
cGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9y
ZGVyaW5nLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsCiAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLApAQCAtMTk3LDYgKzIwMCw3IEBAIHN0
YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTdHJva2VXaWR0aCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwKKyAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybVN0eWxlLAogICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LAog
ICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LApAQCAtNDE5LDE0ICs0MjMsNDEgQEAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGNvbXB1dGVkVHJhbgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3guc2l6
ZSgpLCBSZW5kZXJTdHlsZTo6RXhjbHVkZVRyYW5zZm9ybU9yaWdpbik7CiAKLSAgICBSZWZQdHI8
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IHRyYW5zZm9ybVZhbCA9IFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5zZm9ybU9w
ZXJhdGlvbik7CisgICAgUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiB0cmFuc2Zvcm1W
YWw7CiAKLSAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHRyYW5zZm9ybS5hKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7Ci0gICAgdHJh
bnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0uYigp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgIHRyYW5zZm9ybVZhbC0+YXBw
ZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmMoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpKTsKLSAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5kKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSk7Ci0gICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh0cmFuc2Zvcm0uZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwotICAgIHRy
YW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmYo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAvLyBGSVhNRTogTmVlZCB0
byBwcmludCBvdXQgaW5kaXZpZHVhbCBmdW5jdGlvbnMgKGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzkyNCkKKyAgICBpZiAodHJhbnNmb3JtLmlzQWZmaW5lKCkpIHsK
KyAgICAgICAgdHJhbnNmb3JtVmFsID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OmNyZWF0ZShX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKTsKKworICAg
ICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5z
Zm9ybS5hKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5z
Zm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLmIoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5h
cHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0uYygpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5kKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodHJhbnNmb3JtLmUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
KTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSh0cmFuc2Zvcm0uZigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRyYW5zZm9ybVZhbCA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpj
cmVhdGUoV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
KTsKKworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHRyYW5zZm9ybS5tMTEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAg
ICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFu
c2Zvcm0ubTEyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRy
YW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm0x
MygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1W
YWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMTQoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFw
cGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMjEoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NT
UHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTIyKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm0yMygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHRyYW5zZm9ybS5tMjQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsK
KworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
KHRyYW5zZm9ybS5tMzEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAg
ICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zv
cm0ubTMyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5z
Zm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodHJhbnNmb3JtLm0zMygp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgICAgICB0cmFuc2Zvcm1WYWwt
PmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tMzQoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVu
ZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybS5tNDEoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm0ubTQyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUodHJhbnNmb3JtLm00MygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikpOworICAgICAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3Jl
YXRlKHRyYW5zZm9ybS5tNDQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAg
ICB9CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGxpc3QtPmFwcGVuZCh0cmFuc2Zvcm1WYWwpOwpAQCAt
MTExNCw2ICsxMTQ1LDggQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURl
YwogICAgICAgICAgICAgcmV0dXJuIGdldFRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUtPmFuaW1h
dGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlOgogICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPmFwcGVhcmFu
Y2UoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6
CisgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIo
KHN0eWxlLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4p
ID8gQ1NTVmFsdWVIaWRkZW4gOiBDU1NWYWx1ZVZpc2libGUpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5l
UGllY2VJbWFnZShzdHlsZS0+Ym9yZGVySW1hZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrQm94SW1hZ2U6CkBAIC0xMTI1LDYgKzExNTgsMjMgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPm1hcmdpbkJvdHRvbUNvbGxhcHNlKCkpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luVG9wQ29sbGFwc2U6CiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+bWFyZ2luVG9wQ29sbGFwc2Uo
KSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZToKKyAgICAgICAg
ICAgIGlmIChzdHlsZS0+cGVyc3BlY3RpdmUoKSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZU5vbmUpOworICAg
ICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBlcnNwZWN0
aXZlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOiB7CisgICAgICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwor
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBib3gg
PSBzaXppbmdCb3gocmVuZGVyZXIpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgoKS5jYWxjTWlu
VmFsdWUoYm94LndpZHRoKCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnBl
cnNwZWN0aXZlT3JpZ2luWSgpLmNhbGNNaW5WYWx1ZShib3guaGVpZ2h0KCkpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHls
ZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5ZKCkpKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmc6CiAgICAgICAg
ICAgICBpZiAoc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVZpc3VhbCk7CkBA
IC0xMTYxLDEyICsxMjExLDE4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWMKICAgICAgICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7
CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
c3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKS5jYWxjTWluVmFsdWUoYm94LndpZHRoKCkpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWlu
VmFsdWUoYm94LmhlaWdodCgpKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOworICAgICAg
ICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpICE9IDApCisgICAgICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50
cmFuc2Zvcm1PcmlnaW5aKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSkpOwogICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHN0eWxlLT50cmFuc2Zvcm1P
cmlnaW5ZKCkpKTsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUtPnRyYW5zZm9ybU9yaWdpbloo
KSAhPSAwKQorICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGlzdC5yZWxlYXNl
KCk7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybVN0
eWxlOgorICAgICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlm
aWVyKChzdHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2
ZTNEKSA/IENTU1ZhbHVlUHJlc2VydmUzZCA6IENTU1ZhbHVlRmxhdCk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXk6CiAgICAgICAgICAgICByZXR1cm4gZ2V0
RGVsYXlWYWx1ZShzdHlsZS0+dHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiA0MDg3NikKKysrIFdlYkNvcmUvY3NzL0NT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDkgKzIx
NywxMCBAQCBTdHJpbmcgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmdldFByCiAgICAgICAg
ICAgICByZXR1cm4gZ2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKHByb3BlcnRpZXMsIDYpOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46IHsK
LSAgICAgICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zZm9ybU9yaWdpblgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZIH07Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0U2hvcnRoYW5kVmFsdWUocHJvcGVydGllcywgMik7CisgICAgICAgICAgICBjb25zdCBp
bnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblogfTsKKyAgICAgICAgICAgIHJldHVy
biBnZXRTaG9ydGhhbmRWYWx1ZShwcm9wZXJ0aWVzLCAzKTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjogewogICAgICAgICAgICAgY29uc3QgaW50
IHByb3BlcnRpZXNbNF0gPSB7IENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwKSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2
aXNpb24gNDA4NzYpCisrKyBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjk4LDExICsxMjk4LDUxIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGIKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybU9yaWdpbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWTogeworICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5aOiB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMTsK
KyAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwyOworICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbDM7CisgICAgICAgIGludCBwcm9wSWQxLCBwcm9wSWQyLCBwcm9wSWQzOworICAgICAgICBp
ZiAocGFyc2VUcmFuc2Zvcm1PcmlnaW4ocHJvcElkLCBwcm9wSWQxLCBwcm9wSWQyLCBwcm9wSWQz
LCB2YWwxLCB2YWwyLCB2YWwzKSkgeworICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkMSwg
dmFsMS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBpZiAodmFsMikKKyAgICAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQyLCB2YWwyLnJlbGVhc2UoKSwgaW1wb3J0YW50
KTsKKyAgICAgICAgICAgIGlmICh2YWwzKQorICAgICAgICAgICAgICAgIGFkZFByb3BlcnR5KHBy
b3BJZDMsIHZhbDMucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtU3R5bGU6CisgICAgICAgIGlmICh2YWx1ZS0+aWQgPT0g
Q1NTVmFsdWVGbGF0IHx8IHZhbHVlLT5pZCA9PSBDU1NWYWx1ZVByZXNlcnZlM2QpCisgICAgICAg
ICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QmFja2ZhY2VWaXNpYmlsaXR5OgorICAgICAgICBpZiAodmFsdWUtPmlk
ID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVIaWRkZW4pCisgICAg
ICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmU6CisgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1
ZU5vbmUpCisgICAgICAgICAgICB2YWxpZF9wcmltaXRpdmUgPSB0cnVlOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGlmICh2YWxpZFVuaXQodmFsdWUsIEZOdW1iZXJ8Rk5vbk5lZywgbV9z
dHJpY3QpKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHZhbHVlLT5mVmFsdWUsIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzKXZhbHVlLT51bml0KTsKKyAgICAgICAgICAgICAgICBpZiAodmFsKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgdmFsLnJlbGVhc2UoKSwgaW1wb3J0YW50
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmln
aW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOiB7CiAgICAgICAgIFJlZlB0
cjxDU1NWYWx1ZT4gdmFsMTsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwyOwogICAgICAg
ICBpbnQgcHJvcElkMSwgcHJvcElkMjsKLSAgICAgICAgaWYgKHBhcnNlVHJhbnNmb3JtT3JpZ2lu
KHByb3BJZCwgcHJvcElkMSwgcHJvcElkMiwgdmFsMSwgdmFsMikpIHsKKyAgICAgICAgaWYgKHBh
cnNlUGVyc3BlY3RpdmVPcmlnaW4ocHJvcElkLCBwcm9wSWQxLCBwcm9wSWQyLCB2YWwxLCB2YWwy
KSkgewogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcElkMSwgdmFsMS5yZWxlYXNlKCksIGlt
cG9ydGFudCk7CiAgICAgICAgICAgICBpZiAodmFsMikKICAgICAgICAgICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wSWQyLCB2YWwyLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKQEAgLTIyMTUsNyArMjI1
NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxQcm9wZXJ0eShpbnQgcHIKICAgICAgICAg
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOgogICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246CiAgICAgICAgICAgICAgICAg
ICAgIHBhcnNlRmlsbFBvc2l0aW9uKGN1cnJWYWx1ZSwgY3VyclZhbHVlMik7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIHVubGlrZSB0aGUgb3RoZXIgZnVuY3Rpb25zLCBwYXJzZUZpbGxQb3NpdGlv
biBhZHZhbmNlcyB0aGUgbV92YWx1ZUxpc3QgcG9pbnRlcgorICAgICAgICAgICAgICAgICAgICAv
LyBwYXJzZUZpbGxQb3NpdGlvbiBhZHZhbmNlcyB0aGUgbV92YWx1ZUxpc3QgcG9pbnRlcgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWDoKICAgICAgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uWDogewpAQCAtMjM2Miw2ICsyNDAyLDE4IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmkKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBDU1NQ
YXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5kKFJlZlB0cjxDU1NWYWx1ZT4mIHZh
bHVlMSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTMp
Cit7CisgICAgcGFyc2VGaWxsUG9zaXRpb24odmFsdWUxLCB2YWx1ZTIpOworCisgICAgLy8gbm93
IGdldCB6CisgICAgaWYgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkgJiYgdmFsaWRVbml0KG1fdmFs
dWVMaXN0LT5jdXJyZW50KCksIEZMZW5ndGgsIG1fc3RyaWN0KSkKKyAgICAgICAgdmFsdWUzID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5mVmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGVzKW1fdmFsdWVMaXN0LT5jdXJyZW50KCktPnVuaXQpOworICAgIGlmICh2
YWx1ZTMpCisgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Cit9CisKIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVRpbWluZ0Z1bmN0aW9uVmFsdWUoQ1NTUGFyc2VyVmFsdWVMaXN0KiYgYXJncywgZG91
YmxlJiByZXN1bHQpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHYgPSBhcmdzLT5jdXJyZW50KCk7
CkBAIC0zOTkyLDE3ICs0MDQ0LDM3IEBAIHB1YmxpYzoKICAgICAsIG1fYWxsb3dTaW5nbGVBcmd1
bWVudChmYWxzZSkKICAgICAsIG1fdW5pdChDU1NQYXJzZXI6OkZVbmtub3duKQogICAgIHsKLSAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzY2FsZSgiKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShuYW1lLCAic2NhbGV4KCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzY2Fs
ZXkoIikpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzY2FsZSgiKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGV4KCIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJzY2FsZXkoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNjYWxleigiKSkg
ewogICAgICAgICAgICAgbV91bml0ID0gQ1NTUGFyc2VyOjpGTnVtYmVyOwogICAgICAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzY2FsZSgiKSkKICAgICAgICAgICAgICAgICBt
X3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb247
CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGV4KCIp
KQogICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2Fs
ZVhUcmFuc2Zvcm1PcGVyYXRpb247Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGV5KCIpKQogICAgICAgICAgICAgICAg
IG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRp
b247CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWU6OlNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbjsKKyAgICAgICAgfSBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGUzZCgiKSkgeworICAgICAgICAgICAg
bV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlM0RUcmFuc2Zvcm1PcGVyYXRp
b247CisgICAgICAgICAgICBtX2FyZ0NvdW50ID0gNTsKKyAgICAgICAgICAgIG1fdW5pdCA9IENT
U1BhcnNlcjo6Rk51bWJlcjsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCAicm90YXRlKCIpKSB7CiAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZTo6Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOwogICAgICAgICAgICAgbV91bml0ID0g
Q1NTUGFyc2VyOjpGQW5nbGU7CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgInJvdGF0ZXgoIikgfHwKKyAgICAgICAgICAgICAgICAgICBlcXVhbElnbm9yaW5nQ2Fz
ZShuYW1lLCAicm90YXRleSgiKSB8fAorICAgICAgICAgICAgICAgICAgIGVxdWFsSWdub3JpbmdD
YXNlKG5hbWUsICJyb3RhdGV6KCIpKSB7CisgICAgICAgICAgICBtX3VuaXQgPSBDU1NQYXJzZXI6
OkZBbmdsZTsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAicm90YXRl
eCgiKSkKKyAgICAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
Um90YXRlWFRyYW5zZm9ybU9wZXJhdGlvbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJyb3RhdGV5KCIpKQorICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVZVHJhbnNmb3JtT3BlcmF0aW9uOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpSb3RhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOworICAgICAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG5hbWUsICJyb3RhdGUzZCgiKSkgeworICAgICAgICAgICAgbV90eXBlID0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOworICAg
ICAgICAgICAgbV9hcmdDb3VudCA9IDc7CisgICAgICAgICAgICBtX3VuaXQgPSBDU1NQYXJzZXI6
OkZOdW1iZXI7CiAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNr
ZXcoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNrZXd4KCIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJza2V3eSgiKSkgewogICAgICAgICAgICAgbV91bml0ID0gQ1NTUGFyc2Vy
OjpGQW5nbGU7CiAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNrZXco
IikpCkBAIC00MDExLDIwICs0MDgzLDMzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX3R5
cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1hUcmFuc2Zvcm1PcGVyYXRpb247CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uOwotICAgICAgICB9IGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0cmFuc2xhdGUoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgInRyYW5zbGF0ZXgoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0
ZXkoIikpIHsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHJh
bnNsYXRlKCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0cmFuc2xhdGV4KCIpIHx8IGVx
dWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0cmFuc2xhdGV5KCIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJ0cmFuc2xhdGV6KCIpKSB7CiAgICAgICAgICAgICBtX3VuaXQgPSBDU1NQYXJzZXI6
OkZMZW5ndGggfCBDU1NQYXJzZXI6OkZQZXJjZW50OwogICAgICAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJ0cmFuc2xhdGUoIikpCiAgICAgICAgICAgICAgICAgbV90eXBlID0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0cmFuc2xhdGV4KCIp
KQogICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFu
c2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZXkoIikpCiAgICAgICAg
ICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFu
c2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV90eXBl
ID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb247
CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZTNk
KCIpKSB7CisgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJh
bnNsYXRlM0RUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICBtX2FyZ0NvdW50ID0gNTsK
KyAgICAgICAgICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6Rkxlbmd0aCB8IENTU1BhcnNlcjo6RlBl
cmNlbnQ7CiAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIm1hdHJp
eCgiKSkgewogICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgICAgIG1fYXJnQ291bnQgPSAxMTsKICAg
ICAgICAgICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6Rk51bWJlcjsKKyAgICAgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAibWF0cml4M2QoIikpIHsKKyAgICAgICAgICAgIG1f
dHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlv
bjsKKyAgICAgICAgICAgIG1fYXJnQ291bnQgPSAzMTsKKyAgICAgICAgICAgIG1fdW5pdCA9IENT
U1BhcnNlcjo6Rk51bWJlcjsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShu
YW1lLCAicGVyc3BlY3RpdmUoIikpIHsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjsKKyAgICAgICAgICAg
IG1fdW5pdCA9IENTU1BhcnNlcjo6Rk51bWJlcjsKICAgICAgICAgfQotICAgICAgICAKKwogICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNjYWxlKCIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJza2V3KCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0cmFuc2xh
dGUoIikpIHsKICAgICAgICAgICAgIG1fYWxsb3dTaW5nbGVBcmd1bWVudCA9IHRydWU7CiAgICAg
ICAgICAgICBtX2FyZ0NvdW50ID0gMzsKQEAgLTQwODAsNyArNDE2NSwxMSBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzCiAgICAgICAgIHdoaWxlIChhKSB7CiAgICAg
ICAgICAgICBDU1NQYXJzZXI6OlVuaXRzIHVuaXQgPSBpbmZvLnVuaXQoKTsKIAotICAgICAgICAg
ICAgaWYgKCF2YWxpZFVuaXQoYSwgdW5pdCwgdHJ1ZSkpCisgICAgICAgICAgICAvLyA0dGggcGFy
YW0gb2Ygcm90YXRlM2QoKSBpcyBhbiBhbmdsZSByYXRoZXIgdGhhbiBhIGJhcmUgbnVtYmVyLCB2
YWxpZGF0ZSBpdCBhcyBzdWNoCisgICAgICAgICAgICBpZiAoaW5mby50eXBlKCkgPT0gV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uICYmIGFyZ051bWJl
ciA9PSAzKSB7CisgICAgICAgICAgICAgICAgaWYgKCF2YWxpZFVuaXQoYSwgRkFuZ2xlLCB0cnVl
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KCF2YWxpZFVuaXQoYSwgdW5pdCwgdHJ1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgdmFsdWUgdG8gdGhlIGN1cnJlbnQg
dHJhbnNmb3JtIG9wZXJhdGlvbi4KQEAgLTQxMDAsMTkgKzQxODksMjEgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFycwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsK
IH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luKGludCBwcm9wSWQsIGlu
dCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSwgUmVmUHRy
PENTU1ZhbHVlPiYgdmFsdWUyKQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2lu
KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBpbnQmIHByb3BJZDMsIFJl
ZlB0cjxDU1NWYWx1ZT4mIHZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTIsIFJlZlB0cjxD
U1NWYWx1ZT4mIHZhbHVlMykKIHsKICAgICBwcm9wSWQxID0gcHJvcElkOwogICAgIHByb3BJZDIg
PSBwcm9wSWQ7CisgICAgcHJvcElkMyA9IHByb3BJZDsKICAgICBpZiAocHJvcElkID09IENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luKSB7CiAgICAgICAgIHByb3BJZDEgPSBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblg7CiAgICAgICAgIHByb3BJZDIgPSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk7CisgICAgICAgIHByb3BJZDMgPSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblo7CiAgICAgfQogCiAgICAgc3dpdGNoIChwcm9wSWQpIHsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKLSAgICAgICAgICAg
IHBhcnNlRmlsbFBvc2l0aW9uKHZhbHVlLCB2YWx1ZTIpOwotICAgICAgICAgICAgLy8gVW5saWtl
IHRoZSBvdGhlciBmdW5jdGlvbnMsIHBhcnNlRmlsbFBvc2l0aW9uIGFkdmFuY2VzIHRoZSBtX3Zh
bHVlTGlzdCBwb2ludGVyCisgICAgICAgICAgICBwYXJzZVRyYW5zZm9ybU9yaWdpblNob3J0aGFu
ZCh2YWx1ZSwgdmFsdWUyLCB2YWx1ZTMpOworICAgICAgICAgICAgLy8gcGFyc2VUcmFuc2Zvcm1P
cmlnaW5TaG9ydGhhbmQgYWR2YW5jZXMgdGhlIG1fdmFsdWVMaXN0IHBvaW50ZXIKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WDogewogICAgICAgICAgICAgYm9vbCB4Rm91bmQgPSBmYWxzZSwgeUZvdW5kID0gdHJ1ZTsKQEAg
LTQxMjgsNiArNDIxOSw0NSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1PcmlnaW4o
aW50CiAgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW5aOiB7CisgICAgICAgICAgICBpZiAodmFsaWRVbml0KG1fdmFsdWVMaXN0LT5jdXJyZW50
KCksIEZMZW5ndGgsIG1fc3RyaWN0KSkKKyAgICAgICAgICAgIHZhbHVlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZShtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5mVmFsdWUsIChDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzKW1fdmFsdWVMaXN0LT5jdXJyZW50KCktPnVuaXQpOworICAgICAg
ICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gdmFs
dWU7Cit9CisKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVBlcnNwZWN0aXZlT3JpZ2luKGludCBwcm9w
SWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSwg
UmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUyKQoreworICAgIHByb3BJZDEgPSBwcm9wSWQ7CisgICAg
cHJvcElkMiA9IHByb3BJZDsKKyAgICBpZiAocHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0UGVy
c3BlY3RpdmVPcmlnaW4pIHsKKyAgICAgICAgcHJvcElkMSA9IENTU1Byb3BlcnR5V2Via2l0UGVy
c3BlY3RpdmVPcmlnaW5YOworICAgICAgICBwcm9wSWQyID0gQ1NTUHJvcGVydHlXZWJraXRQZXJz
cGVjdGl2ZU9yaWdpblk7CisgICAgfQorCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luOgorICAgICAgICAgICAgcGFy
c2VGaWxsUG9zaXRpb24odmFsdWUsIHZhbHVlMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWDogeworICAgICAgICAg
ICAgYm9vbCB4Rm91bmQgPSBmYWxzZSwgeUZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIHZhbHVl
ID0gcGFyc2VGaWxsUG9zaXRpb25YWSh4Rm91bmQsIHlGb3VuZCk7CisgICAgICAgICAgICBpZiAo
dmFsdWUpCisgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVj
dGl2ZU9yaWdpblk6IHsKKyAgICAgICAgICAgIGJvb2wgeEZvdW5kID0gdHJ1ZSwgeUZvdW5kID0g
ZmFsc2U7CisgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlRmlsbFBvc2l0aW9uWFkoeEZvdW5kLCB5
Rm91bmQpOworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIG1fdmFsdWVM
aXN0LT5uZXh0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KICAgICAK
ICAgICByZXR1cm4gdmFsdWU7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQW5pbWF0
aW9uUHJvcGVydHkoKTsKICAgICAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBbmltYXRp
b25UaW1pbmdGdW5jdGlvbigpOwogCisgICAgICAgIHZvaWQgcGFyc2VUcmFuc2Zvcm1PcmlnaW5T
aG9ydGhhbmQoUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NT
VmFsdWU+Jik7CiAgICAgICAgIGJvb2wgcGFyc2VUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNl
clZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYgcmVzdWx0KTsKICAgICAgICAgYm9vbCBwYXJzZUFu
aW1hdGlvblByb3BlcnR5KGludCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICAgICAg
Ym9vbCBwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpOwpAQCAtMTQ0LDgg
KzE0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwYXJzZUdyYWRpZW50
KFJlZlB0cjxDU1NWYWx1ZT4mKTsKIAogICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4g
cGFyc2VUcmFuc2Zvcm0oKTsKLSAgICAgICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9yaWdpbihpbnQg
cHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJl
ZlB0cjxDU1NWYWx1ZT4mKTsKLQorICAgICAgICBib29sIHBhcnNlVHJhbnNmb3JtT3JpZ2luKGlu
dCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBpbnQmIHByb3BJZDMsIFJlZlB0
cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOworICAg
ICAgICBib29sIHBhcnNlUGVyc3BlY3RpdmVPcmlnaW4oaW50IHByb3BJZCwgaW50JiBwcm9wSWQx
LCBpbnQmIHByb3BJZCwgIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAg
ICAgICAgIGJvb2wgcGFyc2VWYXJpYWJsZShDU1NWYXJpYWJsZXNEZWNsYXJhdGlvbiosIGNvbnN0
IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlVmFsdWUpOwogICAg
ICAgICB2b2lkIHBhcnNlUHJvcGVydHlXaXRoUmVzb2x2ZWRWYXJpYWJsZXMoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgQ1NTUGFyc2VyVmFs
dWVMaXN0Kik7CiAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAkocmV2aXNpb24gNDA4NzYp
CisrKyBXZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gVGhpcyB1bml0IGlzIGluIENTUyAzLCBi
dXQgdGhhdCBpc24ndCBhIGZpbmlzaGVkIHN0YW5kYXJkIHlldAogICAgICAgICBDU1NfVFVSTiA9
IDEwOAogICAgIH07CisgICAgCisgICAgc3RhdGljIGJvb2wgaXNVbml0VHlwZUxlbmd0aChpbnQg
dHlwZSkgeyByZXR1cm4gdHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAm
JiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KIAogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVJZGVudGlmaWVyKGludCBpZGVudCk7CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZUNvbG9yKHVuc2ln
bmVkIHJnYlZhbHVlKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24gNDA4
NzYpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTEsNiArMTUxLDcgQEAgem9vbQogLXdlYmtpdC1hbmltYXRpb24tbmFtZQogLXdlYmtpdC1h
bmltYXRpb24tdGltaW5nLWZ1bmN0aW9uCiAtd2Via2l0LWFwcGVhcmFuY2UKKy13ZWJraXQtYmFj
a2ZhY2UtdmlzaWJpbGl0eQogLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAKIC13ZWJraXQtYmFja2dy
b3VuZC1jb21wb3NpdGUKIC13ZWJraXQtYmFja2dyb3VuZC1vcmlnaW4KQEAgLTIxNiw2ICsyMTcs
MTAgQEAgem9vbQogLXdlYmtpdC1tYXRjaC1uZWFyZXN0LW1haWwtYmxvY2txdW90ZS1jb2xvcgog
LXdlYmtpdC1uYnNwLW1vZGUKIC13ZWJraXQtcGFkZGluZy1zdGFydAorLXdlYmtpdC1wZXJzcGVj
dGl2ZQorLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4KKy13ZWJraXQtcGVyc3BlY3RpdmUtb3Jp
Z2luLXgKKy13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luLXkKIC13ZWJraXQtcnRsLW9yZGVyaW5n
CiAtd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0CiAtd2Via2l0LXRleHQtZmlsbC1j
b2xvcgpAQCAtMjI4LDYgKzIzMyw4IEBAIHpvb20KIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbgog
LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luLXgKIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbi15Cist
d2Via2l0LXRyYW5zZm9ybS1vcmlnaW4tegorLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGUKIC13ZWJr
aXQtdHJhbnNpdGlvbgogLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5CiAtd2Via2l0LXRyYW5zaXRp
b24tZHVyYXRpb24KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA0MDg3
NikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MywxNSArNjMsMTggQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTGlua0hhc2guaCIKICNpbmNsdWRlICJNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
KyNpbmNsdWRlICJNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlh
TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJOb2Rl
UmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUGFpci5oIgorI2luY2x1ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgog
I2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVD
b25zdGFudHMuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgi
CkBAIC04Myw2ICs4Niw3IEBACiAjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKICNpbmNsdWRlICJXZWJL
aXRDU1NLZXlmcmFtZVJ1bGUuaCIKQEAgLTE0ODAsNyArMTQ4NCw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUKICAgICAvLyBjYXNlcyB3aGVyZSBvYmplY3RzIHRo
YXQgc2hvdWxkIGJlIGJsZW5kZWQgYXMgYSBzaW5nbGUgdW5pdCBlbmQgdXAgd2l0aCBhIG5vbi10
cmFuc3BhcmVudAogICAgIC8vIG9iamVjdCB3ZWRnZWQgaW4gYmV0d2VlbiB0aGVtLiAgQXV0byB6
LWluZGV4IGFsc28gYmVjb21lcyAwIGZvciBvYmplY3RzIHRoYXQgc3BlY2lmeSB0cmFuc2Zvcm1z
L21hc2tzL3JlZmxlY3Rpb25zLgogICAgIGlmIChzdHlsZS0+aGFzQXV0b1pJbmRleCgpICYmICgo
ZSAmJiBlLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9PSBlKSB8fCBzdHlsZS0+b3Bh
Y2l0eSgpIDwgMS4wZiB8fCAKLSAgICAgICAgc3R5bGUtPmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxl
LT5oYXNNYXNrKCkgfHwgc3R5bGUtPmJveFJlZmxlY3QoKSkpCisgICAgICAgIHN0eWxlLT5oYXNU
cmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSB8fCBzdHlsZS0+aGFzTWFzaygpIHx8IHN0eWxlLT5i
b3hSZWZsZWN0KCkpKQogICAgICAgICBzdHlsZS0+c2V0WkluZGV4KDApOwogICAgIAogICAgIC8v
IEJ1dHRvbiwgbGVnZW5kLCBpbnB1dCwgc2VsZWN0IGFuZCB0ZXh0YXJlYSBhbGwgY29uc2lkZXIg
d2lkdGggdmFsdWVzIG9mICdhdXRvJyB0byBiZSAnaW50cmluc2ljJy4KQEAgLTI3MDEsNyArMjcw
NSw3IEBAIHN0YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICAgICAg
aWYgKCFzdHlsZSAmJiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyB8fCB0eXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTKSkgewogICAgICAgICAgICAgaWYgKG9rKQog
ICAgICAgICAgICAgICAgICpvayA9IGZhbHNlOwotICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPiBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSA8IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfREVHKQorICAgICAgICB9IGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1Vu
aXRUeXBlTGVuZ3RoKHR5cGUpKQogICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSksIEZpeGVkKTsKICAgICAgICAgZWxz
ZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAg
ICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKQEAgLTI5OTksNyArMzAwMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICAgICAgfQogICAgICAgICBpZiAobV9zdHlsZS0+c2V0Rm9udERlc2NyaXB0
aW9uKGZvbnREZXNjcmlwdGlvbikpCiAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7Ci0g
ICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQ6CkBAIC0zNTk1LDcgKzM1OTksNyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlICYmICFhcHBseSkgewogICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKQor
ICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUp
KQogICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBvdXIgcXVpcmt5IG1hcmdpbiB1bml0cyBpZiB3
ZSBoYXZlIHRoZW0uCiAgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCB6b29tRmFjdG9yKSwgRml4ZWQsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUtPmlzUXVpcmtWYWx1ZSgp
KTsKQEAgLTM2OTYsNyArMzcwMCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKIAogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgIWFwcGx5KSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5
cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFICYmIHR5cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKKyAgICAgICAgICAg
IGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKICAgICAgICAg
ICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVu
Z3RoKHN0eWxlKCksIHpvb21GYWN0b3IpLCBGaXhlZCk7CiAgICAgICAgICAgICBlbHNlIGlmICh0
eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgICAg
ICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsK
QEAgLTM3NTIsNyArMzc1Niw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgICAgICAgTGVuZ3RoIGw7Ci0gICAgICAgICAgaWYg
KHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSA8IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfREVHKQorICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6
aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgem9vbUZhY3RvciksIEZp
eGVkKTsKICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERv
dWJsZVZhbHVlKCksIFBlcmNlbnQpOwpAQCAtMzgxNiw3ICszODIwLDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TICYmIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfRVhTKSk7Ci0gICAgICAgICAgICBpZiAodHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpCisgICAgICAg
ICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCiAgICAg
ICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQobV9w
YXJlbnRTdHlsZSwgdHJ1ZSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgICAgICBzaXplID0gKHByaW1p
dGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkgKiBvbGRTaXplKSAvIDEwMC4wZjsKQEAgLTM4Nzks
NyArMzg4Myw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAg
ICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwogICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAg
ICAgICAgICBsaW5lSGVpZ2h0ID0gTGVuZ3RoKC0xMDAuMCwgUGVyY2VudCk7Ci0gICAgICAgIGVs
c2UgaWYgKHR5cGUgPiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgdHlwZSA8
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKSB7CisgICAgICAgIGVsc2UgaWYgKENTU1ByaW1p
dGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7CiAgICAgICAgICAgICBkb3VibGUg
bXVsdGlwbGllciA9IG1fc3R5bGUtPmVmZmVjdGl2ZVpvb20oKTsKICAgICAgICAgICAgIGlmICht
X3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpICYmIG1fY2hlY2tlci5tX2RvY3VtZW50LT5mcmFtZSgp
ICYmIG1fY2hlY2tlci5tX2RvY3VtZW50LT5mcmFtZSgpLT5zaG91bGRBcHBseVRleHRab29tKCkp
CiAgICAgICAgICAgICAgICAgbXVsdGlwbGllciAqPSBtX2NoZWNrZXIubV9kb2N1bWVudC0+ZnJh
bWUoKS0+dGV4dFpvb21GYWN0b3IoKTsKQEAgLTQ2MDgsMjEgKzQ2MTIsMjYgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZTogLy8gT25seSB1c2VkIGluIEBmb250LWZhY2UgcnVs
ZXMuCiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2ZhY2VW
aXNpYmlsaXR5OgorICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChiYWNrZmFjZVZp
c2liaWxpdHksIEJhY2tmYWNlVmlzaWJpbGl0eSkKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
KQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0QmFja2ZhY2VWaXNpYmlsaXR5KChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVZpc2libGUpID8gQmFja2ZhY2VWaXNpYmlsaXR5
VmlzaWJsZSA6IEJhY2tmYWNlVmlzaWJpbGl0eUhpZGRlbik7CisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGlyZWN0aW9uOgogICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChib3hEaXJlY3Rpb24sIEJveERpcmVjdGlvbikKICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0Qm94RGlyZWN0aW9uKCpw
cmltaXRpdmVWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgogICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChib3hMaW5lcywgQm94TGluZXMpCiAgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZSkKICAgICAgICAgICAgIG1fc3R5bGUtPnNldEJveExpbmVzKCpwcmltaXRpdmVWYWx1
ZSk7Ci0gICAgICAgIHJldHVybjsgICAgIAorICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwoYm94T3JpZW50LCBCb3hPcmllbnQpCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKICAg
ICAgICAgICAgIG1fc3R5bGUtPnNldEJveE9yaWVudCgqcHJpbWl0aXZlVmFsdWUpOwotICAgICAg
ICByZXR1cm47ICAgICAKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hQYWNrOgogICAgIHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwoYm94
UGFjaywgQm94UGFjaykKQEAgLTQ2NDQsNyArNDY1Myw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKQogICAgICAgICAgICAgcmV0dXJuOyAvLyBFcnJvciBjYXNlLgogICAgICAgICBtX3N0eWxl
LT5zZXRCb3hGbGV4R3JvdXAoKHVuc2lnbmVkIGludCkocHJpbWl0aXZlVmFsdWUtPmdldERvdWJs
ZVZhbHVlKCkpKTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JkaW5hbEdyb3VwOgogICAgICAgICBIQU5ETEVf
SU5IRVJJVF9BTkRfSU5JVElBTChib3hPcmRpbmFsR3JvdXAsIEJveE9yZGluYWxHcm91cCkKICAg
ICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSB8fCBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlw
ZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQpAQCAtNDk4MywxMyArNDk5Miwx
NCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKICAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWCwgVHJhbnNmb3JtT3JpZ2luWCkKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWSwgVHJhbnNmb3JtT3Jp
Z2luWSkKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodHJhbnNmb3JtT3JpZ2lu
WiwgVHJhbnNmb3JtT3JpZ2luWikKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKHRyYW5zZm9ybU9yaWdpblgsIFRyYW5zZm9ybU9yaWdpblgpCiAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwogICAgICAgICBMZW5ndGggbDsKICAgICAgICAgaW50IHR5cGUgPSBwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA+IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19ERUcpCisgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0
eXBlKSkKICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgem9vbUZhY3RvciksIEZpeGVkKTsKICAgICAgICAgZWxz
ZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAg
ICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKQEAgLTUwMDMsNyArNTAxMyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CiAgICAgICAgIExlbmd0aCBsOwog
ICAgICAgICBpbnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7Ci0gICAg
ICAgIGlmICh0eXBlID4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFICYmIHR5cGUg
PCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZh
bHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQogICAgICAgICAgICAgbCA9IExlbmd0aChwcmlt
aXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCB6b29tRmFjdG9y
KSwgRml4ZWQpOwogICAgICAgICBlbHNlIGlmKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKQogICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CkBAIC01MDEyLDYgKzUwMjIsNjkgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICBtX3N0eWxlLT5zZXRUcmFu
c2Zvcm1PcmlnaW5ZKGwpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblo6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUwodHJhbnNmb3JtT3JpZ2luWiwgVHJhbnNmb3JtT3JpZ2luWikKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGZsb2F0IGY7CisgICAgICAgIGludCB0eXBlID0gcHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZh
bHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQorICAgICAgICAgICAgZiA9IHN0YXRpY19jYXN0
PGZsb2F0PihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgp
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdHlsZS0+
c2V0VHJhbnNmb3JtT3JpZ2luWihmKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZToKKyAgICAgICAgSEFORExFX0lOSEVSSVRf
QU5EX0lOSVRJQUwodHJhbnNmb3JtU3R5bGUzRCwgVHJhbnNmb3JtU3R5bGUzRCkKKyAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtU3R5
bGUzRCgocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQcmVzZXJ2ZTNkKSA/
IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEIDogVHJhbnNmb3JtU3R5bGUzREZsYXQpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlOiB7Cisg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlLCBQZXJzcGVjdGl2
ZSkKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlTm9uZSkgeworICAgICAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3Rp
dmUoMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZmxvYXQgcGVyc3BlY3RpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSk7
CisgICAgICAgIGlmIChwZXJzcGVjdGl2ZVZhbHVlID49IDAuMGYpCisgICAgICAgICAgICBtX3N0
eWxlLT5zZXRQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZVZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW46CisgICAg
ICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHBlcnNwZWN0aXZlT3JpZ2luWCwgUGVyc3Bl
Y3RpdmVPcmlnaW5YKQorICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChwZXJzcGVj
dGl2ZU9yaWdpblksIFBlcnNwZWN0aXZlT3JpZ2luWSkKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblg6IHsKKyAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUwocGVyc3BlY3RpdmVPcmlnaW5YLCBQZXJzcGVjdGl2ZU9yaWdp
blgpCisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBMZW5ndGggbDsKKyAgICAg
ICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBp
ZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCisgICAgICAgICAg
ICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0
eWxlKCksIHpvb21GYWN0b3IpLCBGaXhlZCk7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQorICAgICAgICAgICAgbCA9IExlbmd0aChw
cmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdHlsZS0+c2V0UGVyc3BlY3RpdmVPcmln
aW5YKGwpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpblk6IHsKKyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwocGVyc3BlY3RpdmVPcmlnaW5ZLCBQZXJzcGVjdGl2ZU9yaWdpblkpCisgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgICAgICBMZW5ndGggbDsKKyAgICAgICAgaW50IHR5cGUgPSBwcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFs
dWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCisgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIHpvb21GYWN0b3Ip
LCBGaXhlZCk7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpCisgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3N0eWxlLT5zZXRQZXJzcGVjdGl2ZU9yaWdpblkobCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAg
ICAgaWYgKGlzSW5pdGlhbCkKICAgICAgICAgICAgIG1fc3R5bGUtPmNsZWFyQW5pbWF0aW9ucygp
OwpAQCAtNTIzMyw3ICs1MzA2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsU2l6
ZShGaWxsTAogCiAgICAgaWYgKGZpcnN0VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
S05PV04pCiAgICAgICAgIGZpcnN0TGVuZ3RoID0gTGVuZ3RoKEF1dG8pOwotICAgIGVsc2UgaWYg
KGZpcnN0VHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiBmaXJzdFR5
cGUgPCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykKKyAgICBlbHNlIGlmIChDU1NQcmltaXRp
dmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aChmaXJzdFR5cGUpKQogICAgICAgICBmaXJzdExlbmd0
aCA9IExlbmd0aChmaXJzdC0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCB6b29t
RmFjdG9yKSwgRml4ZWQpOwogICAgIGVsc2UgaWYgKGZpcnN0VHlwZSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgIGZpcnN0TGVuZ3RoID0gTGVuZ3RoKGZpcnN0
LT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKQEAgLTUyNDIsNyArNTMxNSw3IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoRmlsbEwKIAogICAgIGlmIChzZWNvbmRUeXBl
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTikKICAgICAgICAgc2Vjb25kTGVuZ3Ro
ID0gTGVuZ3RoKEF1dG8pOwotICAgIGVsc2UgaWYgKHNlY29uZFR5cGUgPiBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UgJiYgc2Vjb25kVHlwZSA8IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfREVHKQorICAgIGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHNlY29uZFR5cGUpKQogICAgICAgICBzZWNvbmRMZW5ndGggPSBMZW5ndGgoc2Vjb25kLT5jb21w
dXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIHpvb21GYWN0b3IpLCBGaXhlZCk7CiAgICAg
ZWxzZSBpZiAoc2Vjb25kVHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
CiAgICAgICAgIHNlY29uZExlbmd0aCA9IExlbmd0aChzZWNvbmQtPmdldERvdWJsZVZhbHVlKCks
IFBlcmNlbnQpOwpAQCAtNTI2OSw3ICs1MzQyLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpt
YXBGaWxsWFBvc2l0aW9uKAogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgIExlbmd0aCBsOwog
ICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICBpZiAo
dHlwZSA+IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19ERUcpCisgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRU
eXBlTGVuZ3RoKHR5cGUpKQogICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIHpvb21GYWN0b3IpLCBGaXhlZCk7CiAgICAg
ZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAg
ICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQp
OwpAQCAtNTI5Myw3ICs1MzY2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWVBv
c2l0aW9uKAogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwogICAgIExlbmd0aCBsOwogICAgIGludCB0
eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKLSAgICBpZiAodHlwZSA+IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSAmJiB0eXBlIDwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19ERUcpCisgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3Ro
KHR5cGUpKQogICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3Ro
SW50Rm9yTGVuZ3RoKHN0eWxlKCksIHpvb21GYWN0b3IpLCBGaXhlZCk7CiAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgIGwgPSBM
ZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwpAQCAtNTc4
NSwxNCArNTg1OCwyNCBAQCBzdGF0aWMgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBl
CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uOiAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRTsKICAgICAg
ICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9u
OiAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g7CiAgICAgICAgIGNh
c2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbjogICAg
ICAgICByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOworICAgICAgICBjYXNlIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVpUcmFuc2Zvcm1PcGVyYXRpb246ICAgICAgICAg
cmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjsKKyAgICAgICAgY2FzZSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogICAgICAgIHJldHVy
biBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOwogICAgICAgICBjYXNlIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246ICAgICAgcmV0dXJuIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOwogICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgcmV0dXJuIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g7CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246ICAgICByZXR1cm4gVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5zZm9ybU9wZXJhdGlvbjogICAgIHJldHVybiBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV9aOworICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpUcmFuc2xhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogICAgcmV0dXJuIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOwogICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246ICAgICAgICAgcmV0dXJuIFRyYW5zZm9y
bU9wZXJhdGlvbjo6Uk9UQVRFOworICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJh
dGlvbjo6Uk9UQVRFX1g7CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246ICAgICAgICByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9u
OjpST1RBVEVfWTsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRl
WlRyYW5zZm9ybU9wZXJhdGlvbjogICAgICAgIHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURV9aOworICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGUzRFRy
YW5zZm9ybU9wZXJhdGlvbjogICAgICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRF
XzNEOwogICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3Jt
T3BlcmF0aW9uOiAgICAgICAgICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzsKICAg
ICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1hUcmFuc2Zvcm1PcGVyYXRp
b246ICAgICAgICAgIHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDsKICAgICAgICAg
Y2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1lUcmFuc2Zvcm1PcGVyYXRpb246ICAg
ICAgICAgIHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWTsKICAgICAgICAgY2FzZSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgICAg
IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDsKKyAgICAgICAgY2FzZSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246ICAgICAgIHJldHVy
biBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDsKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246ICAgIHJldHVybiBU
cmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOwogICAgICAgICBjYXNlIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uOiAgICAgICAgcmV0dXJuIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Tk9ORTsKICAgICB9CiAgICAgcmV0dXJuIFRyYW5zZm9ybU9wZXJh
dGlvbjo6Tk9ORTsKQEAgLTU4MjcsNyArNTkxMCwzMyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OmNyZWF0ZVRyYW5zZm9ybU9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0g
c3g7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoc3gsIHN5LCBnZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBl
KHZhbC0+b3BlcmF0aW9uVHlwZSgpKSkpOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShzeCwg
c3ksIDEuMCwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh2YWwtPm9wZXJhdGlvblR5cGUoKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWlRyYW5zZm9ybU9w
ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpT
Y2FsZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBz
eCA9IDEuMDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN5ID0gMS4wOworICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgc3ogPSAxLjA7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWwt
Pm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVaVHJhbnNm
b3JtT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgc3ogPSBmaXJzdFZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWwtPm9wZXJh
dGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3Bl
cmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBmaXJzdFZhbHVlLT5nZXREb3Vi
bGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCisgICAgICAgICAgICAgICAg
ICAgICAgICBzeCA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkgIT0gV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbikgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YWwtPmxlbmd0aCgpID4gMikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3ogPSB0aGlyZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmFsLT5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3kgPSBzeDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShzeCwgc3ksIHN6LCBn
ZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHZhbC0+b3BlcmF0aW9uVHlwZSgpKSkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
Y2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
OgpAQCAtNTg1MSw3ICs1OTYwLDM3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlVHJh
bnNmb3JtT3AKICAgICAgICAgICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHgs
IHR5LCBnZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHZhbC0+b3BlcmF0aW9uVHlwZSgpKSkpOwor
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHgsIHR5LCBMZW5ndGgoMCwgRml4ZWQpLCBn
ZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHZhbC0+b3BlcmF0aW9uVHlwZSgpKSkpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5zZm9ybU9wZXJhdGlv
bjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xh
dGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBib29sIG9rID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR4ID0gTGVuZ3RoKDAsIEZpeGVkKTsK
KyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAg
ICAgICAgICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAg
ICAgdHogPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgaW5TdHlsZSwgJm9rKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAg
ICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBpblN0eWxlLCAm
b2spOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCisgICAgICAgICAgICAgICAgICAgICAg
ICB0eCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBpblN0eWxlLCAmb2spOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aCh0
aGlyZFZhbHVlLCBpblN0eWxlLCAmb2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5sZW5ndGgoKSA+IDEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZl
cnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgaW5TdHlsZSwgJm9rKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0eCwg
dHksIHR6LCBnZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHZhbC0+b3BlcmF0aW9uVHlwZSgpKSkp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uOiB7CkBAIC01ODYzLDcgKzYwMDIsNDMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpj
cmVhdGVUcmFuc2Zvcm1PcAogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmaXJzdFZhbHVl
LT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGUgPSB0dXJuMmRlZyhhbmdsZSk7CiAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoYW5nbGUsIGdldFRyYW5zZm9ybU9w
ZXJhdGlvblR5cGUodmFsLT5vcGVyYXRpb25UeXBlKCkpKSk7CisgICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZSgwLCAwLCAxLCBhbmdsZSwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh2YWwtPm9w
ZXJhdGlvblR5cGUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAg
ICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVaVHJhbnNmb3JtT3BlcmF0aW9u
OiB7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB4ID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHkgPSAwOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgeiA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVlLT5wcmltaXRpdmVUeXBlKCkg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQpCisgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZSA9IHJhZDJkZWcoYW5nbGUpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmaXJz
dFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBncmFkMmRlZyhhbmdsZSk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25UeXBl
KCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24p
CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICB5ID0gMTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgeiA9IDE7
CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh4LCB5LCB6LCBhbmdsZSwgZ2V0VHJhbnNmb3Jt
T3BlcmF0aW9uVHlwZSh2YWwtPm9wZXJhdGlvblR5cGUoKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAg
ICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7
CisgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb3VydGhWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDMpKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHggPSBmaXJzdFZhbHVlLT5nZXREb3Vi
bGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgeSA9IHNlY29uZFZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgeiA9IHRoaXJkVmFs
dWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZSA9
IGZvdXJ0aFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
Zm91cnRoVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JB
RCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gcmFkMmRlZyhhbmdsZSk7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvdXJ0aFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEKQorICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGUgPSBncmFkMmRlZyhhbmdsZSk7CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh4LCB5LCB6
LCBhbmdsZSwgZ2V0VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh2YWwtPm9wZXJhdGlvblR5cGUoKSkp
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdUcmFuc2Zvcm1PcGVy
YXRpb246CkBAIC01ODk5LDE1ICs2MDc0LDQyIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y3Jl
YXRlVHJhbnNmb3JtT3AKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJp
eFRyYW5zZm9ybU9wZXJhdGlvbjogewotICAgICAgICAgICAgICAgICAgICBmbG9hdCBhID0gZmly
c3RWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBmbG9hdCBiID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMSkpLT5nZXRGbG9hdFZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGMgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygyKSktPmdldEZsb2F0VmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgZCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDMpKS0+Z2V0RmxvYXRWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICBmbG9hdCBlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
NCkpLT5nZXRGbG9hdFZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGYgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1
KSktPmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGEgPSBmaXJz
dFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgYiA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDEpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGMg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygyKSktPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBk
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soMykpLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBkb3VibGUg
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDQpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IGYgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayg1KSktPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShhLCBiLCBjLCBkLCBlLCBmKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3VibGVWYWx1ZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpLT5nZXREb3Vi
bGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykp
LT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNikpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNykpLT5nZXREb3VibGVWYWx1ZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOCkpLT5nZXREb3VibGVW
YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOSkpLT5n
ZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMTApKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDExKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWwtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTMpKS0+Z2V0RG91YmxlVmFsdWUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE0KSktPmdldERvdWJs
ZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNSkp
LT5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUobWF0cml4
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gICAKKyAg
ICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBkb3VibGUgcCA9IGZpcnN0
VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwIDwgMC4w
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3RpdmVUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZShwKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uOgogICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1Zh
bHVlS2V5d29yZHMuaW4JKHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTc1LDYgKzU3NSwxMiBAQCBydW5uaW5nCiBw
YXVzZWQKIAogIworIyBDU1NfUFJPUF9fV0VCS0lUX1RSQU5TRk9STV9TVFlMRQorIworZmxhdAor
cHJlc2VydmUtM2QKKworIwogIyBDU1NfUFJPUF9fV0VCS0lUX1RSQU5TSVRJT05fVElNSU5HX0ZV
TkNUSU9OCiAjIENTU19QUk9QX19XRUJLSVRfQU5JTUFUSU9OX1RJTUlOR19GVU5DVElPTgogIwpA
QCAtNjAxLDQgKzYwNyw0IEBAIHBhaW50ZWQKIGZpbGwKIHN0cm9rZQogI2FsbAotI25vbmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisjbm9uZQpJbmRleDogV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJDb3JlL2Nzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDM2IEBA
IFN0cmluZyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y3NzVGV4dCgKICAgICAgICAgY2FzZSBN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246CiAgICAgICAgICAgICByZXN1bHQgKz0gIm1hdHJpeCgi
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNsYXRlWlRyYW5zZm9ybU9w
ZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAidHJhbnNsYXRlWigiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNsYXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246Cisg
ICAgICAgICAgICByZXN1bHQgKz0gInRyYW5zbGF0ZTNkKCI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVz
dWx0ICs9ICJyb3RhdGVYKCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSb3Rh
dGVZVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJyb3RhdGVZKCI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSb3RhdGVaVHJhbnNmb3JtT3BlcmF0
aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJyb3RhdGVaKCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAg
IHJlc3VsdCArPSAicm90YXRlM2QoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAic2NhbGVa
KCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY2FsZTNEVHJhbnNmb3JtT3Bl
cmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJzY2FsZTNkKCI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAg
ICAgICAgIHJlc3VsdCArPSAicGVyc3BlY3RpdmUoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0
ICs9ICJtYXRyaXgzZCgiOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmgJKHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsMTcgQEAgcHVibGljOgogICAg
ICAgICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLAogICAgICAgICBTa2V3WFRyYW5zZm9ybU9wZXJh
dGlvbiwKICAgICAgICAgU2tld1lUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIE1hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbgorICAgICAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAg
ICAgIFRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFRyYW5zbGF0ZTNEVHJh
bnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uLAorICAg
ICAgICBSb3RhdGVZVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBSb3RhdGVaVHJhbnNmb3Jt
T3BlcmF0aW9uLAorICAgICAgICBSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAg
U2NhbGVaVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBTY2FsZTNEVHJhbnNmb3JtT3BlcmF0
aW9uLAorICAgICAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24KICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGNyZWF0ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIHR5
cGUpCkluZGV4OiBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsCShyZXZpc2lv
biA0MDg3NikKKysrIFdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTYgQEAgbW9kdWxlIGNzcyB7CiAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IENTU19TS0VXWCAgICAgICA9IDk7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IENTU19TS0VXWSAgICAgICA9IDEwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBDU1NfTUFUUklYICAgICAgPSAxMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Q1NTX1RSQU5TTEFURVogID0gMTI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19U
UkFOU0xBVEUzRCA9IDEzOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfUk9UQVRF
WCAgICAgPSAxNDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFURVkgICAg
ID0gMTU7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19ST1RBVEVaICAgICA9IDE2
OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfUk9UQVRFM0QgICAgPSAxNzsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NDQUxFWiAgICAgID0gMTg7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19TQ0FMRTNEICAgICA9IDE5OworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBDU1NfUEVSU1BFQ1RJVkUgPSAyMDsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgQ1NTX01BVFJJWDNEICAgID0gMjE7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IG9wZXJhdGlvblR5cGU7CiAgICAgfTsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAkocmV2aXNpb24gNDA4NzYpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCIKIAotI2lmIEVOQUJM
RSgzRF9UUkFOU0ZPUk1TKQotCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtNTYsNSArNTQsMyBAQCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4g
TWF0cml4M0RUCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RSgzRF9UUkFOU0ZPUk1TKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgJ
KHJldmlzaW9uIDQwODc2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4
LDYgQEAKIAogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbi5oIgogCi0jaWYgRU5BQkxFKDNE
X1RSQU5TRk9STVMpCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uIHsKQEAgLTcxLDYgKzY5
LDQgQEAgcHJpdmF0ZTogICAgCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQotCiAjZW5kaWYgLy8gTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb25faApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
CShyZXZpc2lvbiA0MDg3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIgogCi0jaWYgRU5BQkxFKDNEX1RSQU5TRk9STVMpCi0KICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC02MSw1ICs1OSwzIEBA
IFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBQZXJzcGVjdGkKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKDNEX1RSQU5TRk9STVMpCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1P
cGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gNDA4NzYpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAKLSNpZiBFTkFCTEUoM0RfVFJBTlNGT1JNUykKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
biA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewpAQCAtNzAsNiArNjgsNCBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoM0RfVFJBTlNG
T1JNUykKLQogI2VuZGlmIC8vIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uX2gKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCShyZXZpc2lvbiA0MDg3NikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsNyBAQCBQYXNzUmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gUm90YXRlVHJhCiAgICAgICAgIHkgPSAwLjBmOwogICAgICAgICB6ID0g
MS4wZjsKICAgICB9Ci0jaWYgRU5BQkxFKDNEX1RSQU5TRk9STVMpCiAgICAgcmV0dXJuIFJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIGFuZ2xlLCBST1RBVEVfM0QpOwot
I2Vsc2UKLSAgICByZXR1cm4gUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoMCwgMCwg
eiwgYW5nbGUsIFJPVEFURV9aKTsKLSNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lvbiA0MDg3NikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTIgKzcyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLCBtX2FuZ2xlKGFuZ2xlKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgIHsKLSNpZiBF
TkFCTEUoM0RfVFJBTlNGT1JNUykKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gUk9UQVRFX1ggfHwg
dHlwZSA9PSBST1RBVEVfWSB8fCB0eXBlID09IFJPVEFURV9aIHx8IHR5cGUgPT0gUk9UQVRFXzNE
KTsKLSNlbHNlCi0gICAgICAgIEFTU0VSVCh0eXBlID09IFJPVEFURV9aKTsKLSAgICAgICAgQVNT
RVJUKHggPT0gMCAmJiB5ID09IDApOwotI2VuZGlmCiAgICAgfQogCiAgICAgZG91YmxlIG1feDsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lvbiA0MDg3NikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxMiArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICAs
IG1feihzeikKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICB7Ci0jaWYgRU5BQkxFKDNEX1RS
QU5TRk9STVMpCiAgICAgICAgIEFTU0VSVCh0eXBlID09IFNDQUxFX1ggfHwgdHlwZSA9PSBTQ0FM
RV9ZIHx8IHR5cGUgPT0gU0NBTEVfWiB8fCB0eXBlID09IFNDQUxFIHx8IHR5cGUgPT0gU0NBTEVf
M0QpOwotI2Vsc2UKLSAgICAgICAgQVNTRVJUKHR5cGUgPT0gU0NBTEVfWCB8fCB0eXBlID09IFND
QUxFX1kgfHwgdHlwZSA9PSBTQ0FMRSk7Ci0gICAgICAgIEFTU0VSVChzeiA9PSAxKTsKLSNlbmRp
ZgogICAgIH0KICAgICAgICAgCiAgICAgZG91YmxlIG1feDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
LmgJKHJldmlzaW9uIDQwODc3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb24mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAotI2lmIEVOQUJMRSgzRF9UUkFO
U0ZPUk1TKQogICAgIGJvb2wgaXMzRE9wZXJhdGlvbigpIGNvbnN0CiAgICAgewogICAgICAgICBP
cGVyYXRpb25UeXBlIG9wVHlwZSA9IGdldE9wZXJhdGlvblR5cGUoKTsKQEAgLTgwLDcgKzc5LDYg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgb3BUeXBlID09IE1BVFJJWF8zRCB8fAogICAgICAg
ICAgICAgICAgb3BUeXBlID09IFBFUlNQRUNUSVZFOwogICAgIH0KLSNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCShyZXZpc2lvbiA0
MDg3NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1P
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgbV9vcGVyYXRpb25zW2ldLT5hcHBseSh0LCBzeik7CiAgICAgfQogICAgIAotI2lm
IEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQogICAgIC8vIFJldHVybiB0cnVlIGlmIGFueSBvZiB0aGUg
b3BlcmF0aW9uIHR5cGVzIGFyZSAzRCBvcGVyYXRpb24gdHlwZXMgKGV2ZW4gaWYgdGhlCiAgICAg
Ly8gdmFsdWVzIGRlc2NyaWJlIGFmZmluZSB0cmFuc2Zvcm1zKQogICAgIGJvb2wgaGFzM0RPcGVy
YXRpb24oKSBjb25zdApAQCAtNTcsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5kaWYKICAgICAK
ICAgICBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucygpIHsg
cmV0dXJuIG1fb3BlcmF0aW9uczsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNmb3Jt
T3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zOyB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lvbiA0MDg3
NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTEgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLCBtX3oodHopCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgewotI2lm
IEVOQUJMRSgzRF9UUkFOU0ZPUk1TKQogICAgICAgICBBU1NFUlQodHlwZSA9PSBUUkFOU0xBVEVf
WCB8fCB0eXBlID09IFRSQU5TTEFURV9ZIHx8IHR5cGUgPT0gVFJBTlNMQVRFX1ogfHwgdHlwZSA9
PSBUUkFOU0xBVEUgfHwgdHlwZSA9PSBUUkFOU0xBVEVfM0QpOwotI2Vsc2UKLSAgICAgICAgQVNT
RVJUKHR5cGUgPT0gVFJBTlNMQVRFX1ggfHwgdHlwZSA9PSBUUkFOU0xBVEVfWSB8fCB0eXBlID09
IFRSQU5TTEFURSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBMZW5ndGggbV94OwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gNDA5MTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAwOS0wMi0xMiAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTA4CisKKyAgICAgICAg
QWRkZWQgdGVzdCBmb3IgcGFyc2luZyAzZCBmdW5jdGlvbnMgaW4gd2Via2l0LXRyYW5zZm9ybQor
CisgICAgICAgICogdHJhbnNmb3Jtcy8zZDogQWRkZWQuCisgICAgICAgICogdHJhbnNmb3Jtcy8z
ZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLnhodG1sOiBBZGRlZC4KKwogMjAw
OS0wMi0xMiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNv
bWUgdGVzdHMgdGhhdCBmYWlsIGR1ZSB0byB1c2luZyB0aGUgd3JvbmcgZm9udCBmb3IgSGVicmV3
IHRvIHRoZQpJbmRleDogTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50
ZXJmYWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2Zvcm1z
LzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9jc3NtYXRyaXgtM2QtaW50ZXJmYWNlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMzMgQEAKK1RoaXMgdGVzdCBleGVyY2lzZXMg
dGhlIENTU01hdHJpeCAzRCBpbnRlcmZhY2UKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0NTU01hdHJpeCBjb25zdHJ1Y3RvcnMKK1BBU1MgZGVmYXVsdCBjb25zdHJ1Y3RvcgorUEFT
UyBvYmplY3QgY29uc3RydWN0b3IKK1BBU1Mgc3RyaW5nIGNvbnN0cnVjdG9yCisKK1Rlc3QgdG9T
dHJpbmcKK1BBU1MgYVswXSBpcyAibWF0cml4M2QiCitQQVNTIHBhcnNlRmxvYXQoYTJbMF0pIGlz
IDEKK1BBU1MgcGFyc2VGbG9hdChhMlsxXSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEyWzJdKSBp
cyAwCitQQVNTIHBhcnNlRmxvYXQoYTJbM10pIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChhMls0XSkg
aXMgMAorUEFTUyBwYXJzZUZsb2F0KGEyWzVdKSBpcyAxCitQQVNTIHBhcnNlRmxvYXQoYTJbNl0p
IGlzIDAKK1BBU1MgcGFyc2VGbG9hdChhMls3XSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KGEyWzhd
KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQoYTJbOV0pIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChhMlsx
MF0pIGlzIDEKK1BBU1MgcGFyc2VGbG9hdChhMlsxMV0pIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChh
MlsxMl0pIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChhMlsxM10pIGlzIDAKK1BBU1MgcGFyc2VGbG9h
dChhMlsxNF0pIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChhM1swXSkgaXMgMQorUEFTUyBhM1sxXSBp
cyAiIgorCitUZXN0IGJhZCBpbnB1dCB0byBzdHJpbmcgY29uc3RydWN0b3IKK1BBU1MgbmV3IFdl
YktpdENTU01hdHJpeCgiYmFuYW5hIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBTWU5UQVhfRVJS
OiBET00gRXhjZXB0aW9uIDEyLgorCitUZXN0IGF0dHJpYnV0ZXMgb24gZGVmYXVsdCBtYXRyaXgK
K1BBU1MgbS5tMTEgaXMgMQorUEFTUyBtLm0xMiBpcyAwCitQQVNTIG0ubTEzIGlzIDAKK1BBU1Mg
bS5tMTQgaXMgMAorUEFTUyBtLm0yMSBpcyAwCitQQVNTIG0ubTIyIGlzIDEKK1BBU1MgbS5tMjMg
aXMgMAorUEFTUyBtLm0yNCBpcyAwCitQQVNTIG0ubTMxIGlzIDAKK1BBU1MgbS5tMzIgaXMgMAor
UEFTUyBtLm0zMyBpcyAxCitQQVNTIG0ubTM0IGlzIDAKK1BBU1MgbS5tNDEgaXMgMAorUEFTUyBt
Lm00MiBpcyAwCitQQVNTIG0ubTQzIGlzIDAKK1BBU1MgbS5tNDQgaXMgMQorCitUZXN0IGF0dHJp
YnV0ZXMgb24gY3VzdG9tIG1hdHJpeAorUEFTUyBtLm0xMSBpcyAxMQorUEFTUyBtLm0xMiBpcyAx
MgorUEFTUyBtLm0xMyBpcyAxMworUEFTUyBtLm0xNCBpcyAxNAorUEFTUyBtLm0yMSBpcyAyMQor
UEFTUyBtLm0yMiBpcyAyMgorUEFTUyBtLm0yMyBpcyAyMworUEFTUyBtLm0yNCBpcyAyNAorUEFT
UyBtLm0zMSBpcyAzMQorUEFTUyBtLm0zMiBpcyAzMgorUEFTUyBtLm0zMyBpcyAzMworUEFTUyBt
Lm0zNCBpcyAzNAorUEFTUyBtLm00MSBpcyA0MQorUEFTUyBtLm00MiBpcyA0MgorUEFTUyBtLm00
MyBpcyA0MworUEFTUyBtLm00NCBpcyA0NAorCitUZXN0IHNldE1hdHJpeFZhbHVlIC0gc2V0IHRv
IG1hdHJpeCgpCitQQVNTIG0ubTExIGlzIDExCitQQVNTIG0ubTEyIGlzIDEyCitQQVNTIG0ubTEz
IGlzIDEzCitQQVNTIG0ubTE0IGlzIDE0CitQQVNTIG0ubTIxIGlzIDIxCitQQVNTIG0ubTIyIGlz
IDIyCitQQVNTIG0ubTIzIGlzIDIzCitQQVNTIG0ubTI0IGlzIDI0CitQQVNTIG0ubTMxIGlzIDMx
CitQQVNTIG0ubTMyIGlzIDMyCitQQVNTIG0ubTMzIGlzIDMzCitQQVNTIG0ubTM0IGlzIDM0CitQ
QVNTIG0ubTQxIGlzIDQxCitQQVNTIG0ubTQyIGlzIDQyCitQQVNTIG0ubTQzIGlzIDQzCitQQVNT
IG0ubTQ0IGlzIDQ0CisKK1Rlc3Qgc2V0TWF0cml4VmFsdWUgLSBzZXQgdG8gdHJhbnNsYXRlKDEw
cHgsIDIwcHgsIDMwcHgpIHNjYWxlKDIsIDMsIDQpCitQQVNTIG0ubTExIGlzIDIKK1BBU1MgbS5t
MTIgaXMgMAorUEFTUyBtLm0xMyBpcyAwCitQQVNTIG0ubTE0IGlzIDAKK1BBU1MgbS5tMjEgaXMg
MAorUEFTUyBtLm0yMiBpcyAzCitQQVNTIG0ubTIzIGlzIDAKK1BBU1MgbS5tMjQgaXMgMAorUEFT
UyBtLm0zMSBpcyAwCitQQVNTIG0ubTMyIGlzIDAKK1BBU1MgbS5tMzMgaXMgNAorUEFTUyBtLm0z
NCBpcyAwCitQQVNTIG0ubTQxIGlzIDEwCitQQVNTIG0ubTQyIGlzIDIwCitQQVNTIG0ubTQzIGlz
IDMwCitQQVNTIG0ubTQ0IGlzIDEKKworVGVzdCB0aHJvd2luZyBleGNlcHRpb24gZnJvbSBzZXRN
YXRyaXhWYWx1ZQorUEFTUyBtLnNldE1hdHJpeFZhbHVlKCJiYW5hbmEiKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIG0uc2V0TWF0cml4
VmFsdWUoInRyYW5zbGF0ZTNkKDEwZW0sIDIwJSwgNDApIikgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBtLnNldE1hdHJpeFZhbHVlKCJ0
cmFuc2xhdGUzZCgxMHB4LCAyMHB4LCAzMHB4KSBzY2FsZTNkKCkiKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIuCisKK1Rlc3QgbXVsdGlwbHkKK1BB
U1MgcGFyc2VGbG9hdChtMy5tMTEpIGlzIDI1MAorUEFTUyBwYXJzZUZsb2F0KG0zLm0xMikgaXMg
MjYwCitQQVNTIHBhcnNlRmxvYXQobTMubTEzKSBpcyAyNzAKK1BBU1MgcGFyc2VGbG9hdChtMy5t
MTQpIGlzIDI4MAorUEFTUyBwYXJzZUZsb2F0KG0zLm0yMSkgaXMgNjE4CitQQVNTIHBhcnNlRmxv
YXQobTMubTIyKSBpcyA2NDQKK1BBU1MgcGFyc2VGbG9hdChtMy5tMjMpIGlzIDY3MAorUEFTUyBw
YXJzZUZsb2F0KG0zLm0yNCkgaXMgNjk2CitQQVNTIHBhcnNlRmxvYXQobTMubTMxKSBpcyA5ODYK
K1BBU1MgcGFyc2VGbG9hdChtMy5tMzIpIGlzIDEwMjgKK1BBU1MgcGFyc2VGbG9hdChtMy5tMzMp
IGlzIDEwNzAKK1BBU1MgcGFyc2VGbG9hdChtMy5tMzQpIGlzIDExMTIKK1BBU1MgcGFyc2VGbG9h
dChtMy5tNDEpIGlzIDEzNTQKK1BBU1MgcGFyc2VGbG9hdChtMy5tNDIpIGlzIDE0MTIKK1BBU1Mg
cGFyc2VGbG9hdChtMy5tNDMpIGlzIDE0NzAKK1BBU1MgcGFyc2VGbG9hdChtMy5tNDQpIGlzIDE1
MjgKKworVGVzdCBpbW11dGFiaWxpdHkgb2YgbXVsdGlwbHkKK1BBU1MgcGFyc2VGbG9hdChtLm0x
MSkgaXMgMQorUEFTUyBwYXJzZUZsb2F0KG0ubTEyKSBpcyAyCitQQVNTIHBhcnNlRmxvYXQobS5t
MTMpIGlzIDMKK1BBU1MgcGFyc2VGbG9hdChtLm0xNCkgaXMgNAorUEFTUyBwYXJzZUZsb2F0KG0u
bTIxKSBpcyA1CitQQVNTIHBhcnNlRmxvYXQobS5tMjIpIGlzIDYKK1BBU1MgcGFyc2VGbG9hdCht
Lm0yMykgaXMgNworUEFTUyBwYXJzZUZsb2F0KG0ubTI0KSBpcyA4CitQQVNTIHBhcnNlRmxvYXQo
bS5tMzEpIGlzIDkKK1BBU1MgcGFyc2VGbG9hdChtLm0zMikgaXMgMTAKK1BBU1MgcGFyc2VGbG9h
dChtLm0zMykgaXMgMTEKK1BBU1MgcGFyc2VGbG9hdChtLm0zNCkgaXMgMTIKK1BBU1MgcGFyc2VG
bG9hdChtLm00MSkgaXMgMTMKK1BBU1MgcGFyc2VGbG9hdChtLm00MikgaXMgMTQKK1BBU1MgcGFy
c2VGbG9hdChtLm00MykgaXMgMTUKK1BBU1MgcGFyc2VGbG9hdChtLm00NCkgaXMgMTYKKworVGVz
dCBpbnZlcnNlCitQQVNTIHBhcnNlRmxvYXQobTIubTExKSBpcyAwLjUKK1BBU1MgcGFyc2VGbG9h
dChtMi5tMTIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMTMpIGlzIDAKK1BBU1MgcGFyc2VG
bG9hdChtMi5tMTQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjEpIGlzIDAKK1BBU1MgcGFy
c2VGbG9hdChtMi5tMjIpIGlzIDAuNQorUEFTUyBwYXJzZUZsb2F0KG0yLm0yMykgaXMgMAorUEFT
UyBwYXJzZUZsb2F0KG0yLm0yNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0zMSkgaXMgMAor
UEFTUyBwYXJzZUZsb2F0KG0yLm0zMikgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0zMykgaXMg
MC41CitQQVNTIHBhcnNlRmxvYXQobTIubTM0KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTQx
KSBpcyAtNQorUEFTUyBwYXJzZUZsb2F0KG0yLm00MikgaXMgLTEwCitQQVNTIHBhcnNlRmxvYXQo
bTIubTQzKSBpcyAtMTUKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDQpIGlzIDEKKworVGVzdCBpbW11
dGFiaWxpdHkgb2YgaW52ZXJzZQorUEFTUyBwYXJzZUZsb2F0KG0ubTExKSBpcyAyCitQQVNTIHBh
cnNlRmxvYXQobS5tMTIpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm0xMykgaXMgMAorUEFTUyBw
YXJzZUZsb2F0KG0ubTE0KSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tMjEpIGlzIDAKK1BBU1Mg
cGFyc2VGbG9hdChtLm0yMikgaXMgMgorUEFTUyBwYXJzZUZsb2F0KG0ubTIzKSBpcyAwCitQQVNT
IHBhcnNlRmxvYXQobS5tMjQpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtLm0zMSkgaXMgMAorUEFT
UyBwYXJzZUZsb2F0KG0ubTMyKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobS5tMzMpIGlzIDIKK1BB
U1MgcGFyc2VGbG9hdChtLm0zNCkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0ubTQxKSBpcyAxMAor
UEFTUyBwYXJzZUZsb2F0KG0ubTQyKSBpcyAyMAorUEFTUyBwYXJzZUZsb2F0KG0ubTQzKSBpcyAz
MAorUEFTUyBwYXJzZUZsb2F0KG0ubTQ0KSBpcyAxCisKK1Rlc3QgdGhyb3dpbmcgZXhjZXB0aW9u
IGZyb20gaW52ZXJzZQorUEFTUyBtLmludmVyc2UoKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5P
VF9TVVBQT1JURURfRVJSOiBET00gRXhjZXB0aW9uIDkuCisKK1Rlc3QgdHJhbnNsYXRlCitQQVNT
IG0yLm0xMSBpcyAxCitQQVNTIG0yLm0xMiBpcyAwCitQQVNTIG0yLm0xMyBpcyAwCitQQVNTIG0y
Lm0xNCBpcyAwCitQQVNTIG0yLm0yMSBpcyAwCitQQVNTIG0yLm0yMiBpcyAxCitQQVNTIG0yLm0y
MyBpcyAwCitQQVNTIG0yLm0yNCBpcyAwCitQQVNTIG0yLm0zMSBpcyAwCitQQVNTIG0yLm0zMiBp
cyAwCitQQVNTIG0yLm0zMyBpcyAxCitQQVNTIG0yLm0zNCBpcyAwCitQQVNTIG0yLm00MSBpcyAx
MAorUEFTUyBtMi5tNDIgaXMgMjAKK1BBU1MgbTIubTQzIGlzIDMwCitQQVNTIG0yLm00NCBpcyAx
CisKK1Rlc3QgaW1tdXRhYmlsaXR5IG9mIHRyYW5zbGF0ZQorUEFTUyBtLm0xMSBpcyAxCitQQVNT
IG0ubTEyIGlzIDAKK1BBU1MgbS5tMTMgaXMgMAorUEFTUyBtLm0xNCBpcyAwCitQQVNTIG0ubTIx
IGlzIDAKK1BBU1MgbS5tMjIgaXMgMQorUEFTUyBtLm0yMyBpcyAwCitQQVNTIG0ubTI0IGlzIDAK
K1BBU1MgbS5tMzEgaXMgMAorUEFTUyBtLm0zMiBpcyAwCitQQVNTIG0ubTMzIGlzIDEKK1BBU1Mg
bS5tMzQgaXMgMAorUEFTUyBtLm00MSBpcyAwCitQQVNTIG0ubTQyIGlzIDAKK1BBU1MgbS5tNDMg
aXMgMAorUEFTUyBtLm00NCBpcyAxCisKK1Rlc3Qgc2NhbGUKK1BBU1MgbTIubTExIGlzIDEwCitQ
QVNTIG0yLm0xMiBpcyAwCitQQVNTIG0yLm0xMyBpcyAwCitQQVNTIG0yLm0xNCBpcyAwCitQQVNT
IG0yLm0yMSBpcyAwCitQQVNTIG0yLm0yMiBpcyAyMAorUEFTUyBtMi5tMjMgaXMgMAorUEFTUyBt
Mi5tMjQgaXMgMAorUEFTUyBtMi5tMzEgaXMgMAorUEFTUyBtMi5tMzIgaXMgMAorUEFTUyBtMi5t
MzMgaXMgMzAKK1BBU1MgbTIubTM0IGlzIDAKK1BBU1MgbTIubTQxIGlzIDAKK1BBU1MgbTIubTQy
IGlzIDAKK1BBU1MgbTIubTQzIGlzIDAKK1BBU1MgbTIubTQ0IGlzIDEKKworVGVzdCBpbW11dGFi
aWxpdHkgb2Ygc2NhbGUKK1BBU1MgbS5tMTEgaXMgMQorUEFTUyBtLm0xMiBpcyAwCitQQVNTIG0u
bTEzIGlzIDAKK1BBU1MgbS5tMTQgaXMgMAorUEFTUyBtLm0yMSBpcyAwCitQQVNTIG0ubTIyIGlz
IDEKK1BBU1MgbS5tMjMgaXMgMAorUEFTUyBtLm0yNCBpcyAwCitQQVNTIG0ubTMxIGlzIDAKK1BB
U1MgbS5tMzIgaXMgMAorUEFTUyBtLm0zMyBpcyAxCitQQVNTIG0ubTM0IGlzIDAKK1BBU1MgbS5t
NDEgaXMgMAorUEFTUyBtLm00MiBpcyAwCitQQVNTIG0ubTQzIGlzIDAKK1BBU1MgbS5tNDQgaXMg
MQorCitUZXN0IHJvdGF0ZQorUEFTUyBwYXJzZUZsb2F0KG0yLm0xMS50b1ByZWNpc2lvbig2KSkg
aXMgMC44MTM3OTgKK1BBU1MgcGFyc2VGbG9hdChtMi5tMTIudG9QcmVjaXNpb24oNikpIGlzIDAu
NDY5ODQ2CitQQVNTIHBhcnNlRmxvYXQobTIubTEzLnRvUHJlY2lzaW9uKDYpKSBpcyAtMC4zNDIw
MgorUEFTUyBwYXJzZUZsb2F0KG0yLm0xNC50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJz
ZUZsb2F0KG0yLm0yMS50b1ByZWNpc2lvbig2KSkgaXMgLTAuNDQwOTcKK1BBU1MgcGFyc2VGbG9h
dChtMi5tMjIudG9QcmVjaXNpb24oNikpIGlzIDAuODgyNTY0CitQQVNTIHBhcnNlRmxvYXQobTIu
bTIzLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjE2MzE3NgorUEFTUyBwYXJzZUZsb2F0KG0yLm0yNC50
b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBwYXJzZUZsb2F0KG0yLm0zMS50b1ByZWNpc2lvbig2
KSkgaXMgMC4zNzg1MjIKK1BBU1MgcGFyc2VGbG9hdChtMi5tMzIudG9QcmVjaXNpb24oNikpIGlz
IDAuMDE4MDI4MworUEFTUyBwYXJzZUZsb2F0KG0yLm0zMy50b1ByZWNpc2lvbig2KSkgaXMgMC45
MjU0MTcKK1BBU1MgcGFyc2VGbG9hdChtMi5tMzQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1Mg
cGFyc2VGbG9hdChtMi5tNDEudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdCht
Mi5tNDIudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDMudG9QcmVj
aXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDQudG9QcmVjaXNpb24oNikpIGlz
IDEKKworVGVzdCBpbW11dGFiaWxpdHkgb2Ygcm90YXRlCitQQVNTIG0ubTExIGlzIDEKK1BBU1Mg
bS5tMTIgaXMgMAorUEFTUyBtLm0xMyBpcyAwCitQQVNTIG0ubTE0IGlzIDAKK1BBU1MgbS5tMjEg
aXMgMAorUEFTUyBtLm0yMiBpcyAxCitQQVNTIG0ubTIzIGlzIDAKK1BBU1MgbS5tMjQgaXMgMAor
UEFTUyBtLm0zMSBpcyAwCitQQVNTIG0ubTMyIGlzIDAKK1BBU1MgbS5tMzMgaXMgMQorUEFTUyBt
Lm0zNCBpcyAwCitQQVNTIG0ubTQxIGlzIDAKK1BBU1MgbS5tNDIgaXMgMAorUEFTUyBtLm00MyBp
cyAwCitQQVNTIG0ubTQ0IGlzIDEKKworVGVzdCByb3RhdGVBeGlzQW5nbGUKK1BBU1MgcGFyc2VG
bG9hdChtMi5tMTEudG9QcmVjaXNpb24oNikpIGlzIDAuODA0NzM4CitQQVNTIHBhcnNlRmxvYXQo
bTIubTEyLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjUwNTg3OQorUEFTUyBwYXJzZUZsb2F0KG0yLm0x
My50b1ByZWNpc2lvbig2KSkgaXMgLTAuMzEwNjE3CitQQVNTIHBhcnNlRmxvYXQobTIubTE0LnRv
UHJlY2lzaW9uKDYpKSBpcyAwCitQQVNTIHBhcnNlRmxvYXQobTIubTIxLnRvUHJlY2lzaW9uKDYp
KSBpcyAtMC4zMTA2MTcKK1BBU1MgcGFyc2VGbG9hdChtMi5tMjIudG9QcmVjaXNpb24oNikpIGlz
IDAuODA0NzM4CitQQVNTIHBhcnNlRmxvYXQobTIubTIzLnRvUHJlY2lzaW9uKDYpKSBpcyAwLjUw
NTg3OQorUEFTUyBwYXJzZUZsb2F0KG0yLm0yNC50b1ByZWNpc2lvbig2KSkgaXMgMAorUEFTUyBw
YXJzZUZsb2F0KG0yLm0zMS50b1ByZWNpc2lvbig2KSkgaXMgMC41MDU4NzkKK1BBU1MgcGFyc2VG
bG9hdChtMi5tMzIudG9QcmVjaXNpb24oNikpIGlzIC0wLjMxMDYxNworUEFTUyBwYXJzZUZsb2F0
KG0yLm0zMy50b1ByZWNpc2lvbig2KSkgaXMgMC44MDQ3MzgKK1BBU1MgcGFyc2VGbG9hdChtMi5t
MzQudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDEudG9QcmVjaXNp
b24oNikpIGlzIDAKK1BBU1MgcGFyc2VGbG9hdChtMi5tNDIudG9QcmVjaXNpb24oNikpIGlzIDAK
K1BBU1MgcGFyc2VGbG9hdChtMi5tNDMudG9QcmVjaXNpb24oNikpIGlzIDAKK1BBU1MgcGFyc2VG
bG9hdChtMi5tNDQudG9QcmVjaXNpb24oNikpIGlzIDEKKworVGVzdCBpbW11dGFiaWxpdHkgb2Yg
cm90YXRlQXhpc0FuZ2xlCitQQVNTIG0ubTExIGlzIDEKK1BBU1MgbS5tMTIgaXMgMAorUEFTUyBt
Lm0xMyBpcyAwCitQQVNTIG0ubTE0IGlzIDAKK1BBU1MgbS5tMjEgaXMgMAorUEFTUyBtLm0yMiBp
cyAxCitQQVNTIG0ubTIzIGlzIDAKK1BBU1MgbS5tMjQgaXMgMAorUEFTUyBtLm0zMSBpcyAwCitQ
QVNTIG0ubTMyIGlzIDAKK1BBU1MgbS5tMzMgaXMgMQorUEFTUyBtLm0zNCBpcyAwCitQQVNTIG0u
bTQxIGlzIDAKK1BBU1MgbS5tNDIgaXMgMAorUEFTUyBtLm00MyBpcyAwCitQQVNTIG0ubTQ0IGlz
IDEKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvY3NzbWF0cml4LTNkLWludGVyZmFjZS54
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2Nzc21hdHJpeC0z
ZC1pbnRlcmZhY2UueGh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmFuc2Zvcm1z
LzNkL2Nzc21hdHJpeC0zZC1pbnRlcmZhY2UueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDExIEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGV4ZXJjaXNlcyB0aGUgQ1NTTWF0cml4IDNEIGludGVy
ZmFjZSIpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiQ1NTTWF0cml4IGNvbnN0cnVjdG9ycyIpOwor
Cit2YXIgbSA9IG51bGw7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgpOworaWYgKG0pCisgIHRl
c3RQYXNzZWQoImRlZmF1bHQgY29uc3RydWN0b3IiKTsKK2Vsc2UKKyAgdGVzdEZhaWxlZCgiZGVm
YXVsdCBjb25zdHJ1Y3RvciIpOworCit2YXIgbTIgPSBuZXcgV2ViS2l0Q1NTTWF0cml4KG0pOwor
aWYgKG0yKQorICB0ZXN0UGFzc2VkKCJvYmplY3QgY29uc3RydWN0b3IiKTsKK2Vsc2UKKyAgdGVz
dEZhaWxlZCgib2JqZWN0IGNvbnN0cnVjdG9yIik7CisKK20gPSBuZXcgV2ViS2l0Q1NTTWF0cml4
KCJtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAx
KSIpOworaWYgKG0pCisgIHRlc3RQYXNzZWQoInN0cmluZyBjb25zdHJ1Y3RvciIpOworZWxzZQor
ICB0ZXN0RmFpbGVkKCJzdHJpbmcgY29uc3RydWN0b3IiKTsKKworZGVidWcoIiIpOworZGVidWco
IlRlc3QgdG9TdHJpbmciKTsKK3ZhciBtID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0cml4M2Qo
MSwgMCwgMCwgMSwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSkiKTsKK3ZhciBz
ID0gbS50b1N0cmluZygpOwordmFyIGEgPSBzLnNwbGl0KCcoJyk7CitzaG91bGRCZSgnYVswXScs
ICcibWF0cml4M2QiJyk7Cit2YXIgYTIgPSBhWzFdLnNwbGl0KCcsJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChhMlswXSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbMV0pJywgJzAn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzJdKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChhMlszXSknLCAnMScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbNF0pJywgJzAnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEyWzVdKScsICcxJyk7CitzaG91bGRCZSgncGFyc2VGbG9h
dChhMls2XSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbN10pJywgJzAnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KGEyWzhdKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChh
Mls5XSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbMTBdKScsICcxJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChhMlsxMV0pJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KGEy
WzEyXSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTJbMTNdKScsICcwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChhMlsxNF0pJywgJzAnKTsKK3ZhciBhMyA9IGEyWzE1XS5zcGxpdCgi
KSIpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQoYTNbMF0pJywgJzEnKTsKK3Nob3VsZEJlKCdhM1sx
XScsICciIicpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBiYWQgaW5wdXQgdG8gc3RyaW5n
IGNvbnN0cnVjdG9yIik7CitzaG91bGRUaHJvdygnbmV3IFdlYktpdENTU01hdHJpeCgiYmFuYW5h
IiknKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3QgYXR0cmlidXRlcyBvbiBkZWZhdWx0IG1h
dHJpeCIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsKK3Nob3VsZEJlKCdtLm0xMScsICcx
Jyk7CitzaG91bGRCZSgnbS5tMTInLCAnMCcpOworc2hvdWxkQmUoJ20ubTEzJywgJzAnKTsKK3No
b3VsZEJlKCdtLm0xNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMCcpOworc2hvdWxkQmUo
J20ubTIyJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0yMycsICcwJyk7CitzaG91bGRCZSgnbS5tMjQn
LCAnMCcpOworc2hvdWxkQmUoJ20ubTMxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMicsICcwJyk7
CitzaG91bGRCZSgnbS5tMzMnLCAnMScpOworc2hvdWxkQmUoJ20ubTM0JywgJzAnKTsKK3Nob3Vs
ZEJlKCdtLm00MScsICcwJyk7CitzaG91bGRCZSgnbS5tNDInLCAnMCcpOworc2hvdWxkQmUoJ20u
bTQzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00NCcsICcxJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVn
KCJUZXN0IGF0dHJpYnV0ZXMgb24gY3VzdG9tIG1hdHJpeCIpOworbSA9IG5ldyBXZWJLaXRDU1NN
YXRyaXgoIm1hdHJpeDNkKDExLCAxMiwgMTMsIDE0LCAyMSwgMjIsIDIzLCAyNCwgMzEsIDMyLCAz
MywgMzQsIDQxLCA0MiwgNDMsIDQ0KSIpOworc2hvdWxkQmUoJ20ubTExJywgJzExJyk7CitzaG91
bGRCZSgnbS5tMTInLCAnMTInKTsKK3Nob3VsZEJlKCdtLm0xMycsICcxMycpOworc2hvdWxkQmUo
J20ubTE0JywgJzE0Jyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMjEnKTsKK3Nob3VsZEJlKCdtLm0y
MicsICcyMicpOworc2hvdWxkQmUoJ20ubTIzJywgJzIzJyk7CitzaG91bGRCZSgnbS5tMjQnLCAn
MjQnKTsKK3Nob3VsZEJlKCdtLm0zMScsICczMScpOworc2hvdWxkQmUoJ20ubTMyJywgJzMyJyk7
CitzaG91bGRCZSgnbS5tMzMnLCAnMzMnKTsKK3Nob3VsZEJlKCdtLm0zNCcsICczNCcpOworc2hv
dWxkQmUoJ20ubTQxJywgJzQxJyk7CitzaG91bGRCZSgnbS5tNDInLCAnNDInKTsKK3Nob3VsZEJl
KCdtLm00MycsICc0MycpOworc2hvdWxkQmUoJ20ubTQ0JywgJzQ0Jyk7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0IHNldE1hdHJpeFZhbHVlIC0gc2V0IHRvIG1hdHJpeCgpIik7CittID0gbmV3
IFdlYktpdENTU01hdHJpeCgpOworbS5zZXRNYXRyaXhWYWx1ZSgibWF0cml4M2QoMTEsIDEyLCAx
MywgMTQsIDIxLCAyMiwgMjMsIDI0LCAzMSwgMzIsIDMzLCAzNCwgNDEsIDQyLCA0MywgNDQpIik7
CitzaG91bGRCZSgnbS5tMTEnLCAnMTEnKTsKK3Nob3VsZEJlKCdtLm0xMicsICcxMicpOworc2hv
dWxkQmUoJ20ubTEzJywgJzEzJyk7CitzaG91bGRCZSgnbS5tMTQnLCAnMTQnKTsKK3Nob3VsZEJl
KCdtLm0yMScsICcyMScpOworc2hvdWxkQmUoJ20ubTIyJywgJzIyJyk7CitzaG91bGRCZSgnbS5t
MjMnLCAnMjMnKTsKK3Nob3VsZEJlKCdtLm0yNCcsICcyNCcpOworc2hvdWxkQmUoJ20ubTMxJywg
JzMxJyk7CitzaG91bGRCZSgnbS5tMzInLCAnMzInKTsKK3Nob3VsZEJlKCdtLm0zMycsICczMycp
Oworc2hvdWxkQmUoJ20ubTM0JywgJzM0Jyk7CitzaG91bGRCZSgnbS5tNDEnLCAnNDEnKTsKK3No
b3VsZEJlKCdtLm00MicsICc0MicpOworc2hvdWxkQmUoJ20ubTQzJywgJzQzJyk7CitzaG91bGRC
ZSgnbS5tNDQnLCAnNDQnKTsKKworZGVidWcoIiIpOworZGVidWcoIlRlc3Qgc2V0TWF0cml4VmFs
dWUgLSBzZXQgdG8gdHJhbnNsYXRlKDEwcHgsIDIwcHgsIDMwcHgpIHNjYWxlKDIsIDMsIDQpIik7
CittID0gbmV3IFdlYktpdENTU01hdHJpeCgpOworbS5zZXRNYXRyaXhWYWx1ZSgidHJhbnNsYXRl
M2QoMTBweCwgMjBweCwgMzBweCkgc2NhbGUzZCgyLCAzLCA0KSIpOworc2hvdWxkQmUoJ20ubTEx
JywgJzInKTsKK3Nob3VsZEJlKCdtLm0xMicsICcwJyk7CitzaG91bGRCZSgnbS5tMTMnLCAnMCcp
Oworc2hvdWxkQmUoJ20ubTE0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMScsICcwJyk7CitzaG91
bGRCZSgnbS5tMjInLCAnMycpOworc2hvdWxkQmUoJ20ubTIzJywgJzAnKTsKK3Nob3VsZEJlKCdt
Lm0yNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMzEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMyJywg
JzAnKTsKK3Nob3VsZEJlKCdtLm0zMycsICc0Jyk7CitzaG91bGRCZSgnbS5tMzQnLCAnMCcpOwor
c2hvdWxkQmUoJ20ubTQxJywgJzEwJyk7CitzaG91bGRCZSgnbS5tNDInLCAnMjAnKTsKK3Nob3Vs
ZEJlKCdtLm00MycsICczMCcpOworc2hvdWxkQmUoJ20ubTQ0JywgJzEnKTsKKworZGVidWcoIiIp
OworZGVidWcoIlRlc3QgdGhyb3dpbmcgZXhjZXB0aW9uIGZyb20gc2V0TWF0cml4VmFsdWUiKTsK
K3Nob3VsZFRocm93KCdtLnNldE1hdHJpeFZhbHVlKCJiYW5hbmEiKScpOworc2hvdWxkVGhyb3co
J20uc2V0TWF0cml4VmFsdWUoInRyYW5zbGF0ZTNkKDEwZW0sIDIwJSwgNDApIiknKTsKK3Nob3Vs
ZFRocm93KCdtLnNldE1hdHJpeFZhbHVlKCJ0cmFuc2xhdGUzZCgxMHB4LCAyMHB4LCAzMHB4KSBz
Y2FsZTNkKCkiKScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBtdWx0aXBseSIpOworbSA9
ICBuZXcgV2ViS2l0Q1NTTWF0cml4KCJtYXRyaXgzZCggMSwgIDIsICAzLCAgNCwgIDUsICA2LCAg
NywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNikiKTsKK20yID0gbmV3IFdlYktp
dENTU01hdHJpeCgibWF0cml4M2QoMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwg
MjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIpIik7Cit2YXIgbTMgPSBtLm11bHRpcGx5KG0yKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0xMSknLCAnMjUwJyk7CitzaG91bGRCZSgncGFyc2VG
bG9hdChtMy5tMTIpJywgJzI2MCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTEzKScsICcy
NzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0xNCknLCAnMjgwJyk7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtMy5tMjEpJywgJzYxOCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTIy
KScsICc2NDQnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0yMyknLCAnNjcwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMy5tMjQpJywgJzY5NicpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTMubTMxKScsICc5ODYnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm0zMiknLCAnMTAyOCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTMzKScsICcxMDcwJyk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMy5tMzQpJywgJzExMTInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0zLm00MSkn
LCAnMTM1NCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTMubTQyKScsICcxNDEyJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMy5tNDMpJywgJzE0NzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0
KG0zLm00NCknLCAnMTUyOCcpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxp
dHkgb2YgbXVsdGlwbHkiKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTExKScsICcxJyk7Citz
aG91bGRCZSgncGFyc2VGbG9hdChtLm0xMiknLCAnMicpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bS5tMTMpJywgJzMnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTE0KScsICc0Jyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtLm0yMSknLCAnNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5t
MjIpJywgJzYnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIzKScsICc3Jyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtLm0yNCknLCAnOCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tMzEp
JywgJzknKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTMyKScsICcxMCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobS5tMzMpJywgJzExJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zNCkn
LCAnMTInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQxKScsICcxMycpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobS5tNDIpJywgJzE0Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00Mykn
LCAnMTUnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTQ0KScsICcxNicpOworCitkZWJ1Zygi
Iik7CitkZWJ1ZygiVGVzdCBpbnZlcnNlIik7CittID0gbmV3IFdlYktpdENTU01hdHJpeCgibWF0
cml4M2QoMiwgMCwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgMCwgMiwgMCwgMTAsIDIwLCAzMCwgMSki
KTsKK20yID0gbS5pbnZlcnNlKCk7CisKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0xMSknLCAn
MC41Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMTIpJywgJzAnKTsKK3Nob3VsZEJlKCdw
YXJzZUZsb2F0KG0yLm0xMyknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTE0KScs
ICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjEpJywgJzAnKTsKK3Nob3VsZEJlKCdw
YXJzZUZsb2F0KG0yLm0yMiknLCAnMC41Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMjMp
JywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yNCknLCAnMCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTIubTMxKScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tMzIp
JywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMyknLCAnMC41Jyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMi5tMzQpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00
MSknLCAnLTUnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00MiknLCAnLTEwJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMi5tNDMpJywgJy0xNScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQo
bTIubTQ0KScsICcxJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBv
ZiBpbnZlcnNlIik7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xMSknLCAnMicpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobS5tMTIpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTEz
KScsICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0xNCknLCAnMCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobS5tMjEpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTIyKScs
ICcyJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0yMyknLCAnMCcpOworc2hvdWxkQmUoJ3Bh
cnNlRmxvYXQobS5tMjQpJywgJzAnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTMxKScsICcw
Jyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm0zMiknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNl
RmxvYXQobS5tMzMpJywgJzInKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0ubTM0KScsICcwJyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00MSknLCAnMTAnKTsKK3Nob3VsZEJlKCdwYXJzZUZs
b2F0KG0ubTQyKScsICcyMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobS5tNDMpJywgJzMwJyk7
CitzaG91bGRCZSgncGFyc2VGbG9hdChtLm00NCknLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1
ZygiVGVzdCB0aHJvd2luZyBleGNlcHRpb24gZnJvbSBpbnZlcnNlIik7CittID0gbmV3IFdlYktp
dENTU01hdHJpeCgibWF0cml4M2QoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCkiKTsgLy8gbm90IGludmVydGlibGUKK3Nob3VsZFRocm93KCdtLmludmVyc2Uo
KScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCB0cmFuc2xhdGUiKTsKK20gPSBuZXcgV2Vi
S2l0Q1NTTWF0cml4KCk7Cit2YXIgbTIgPSBtLnRyYW5zbGF0ZSgxMCwgMjAsIDMwKTsKK3Nob3Vs
ZEJlKCdtMi5tMTEnLCAnMScpOworc2hvdWxkQmUoJ20yLm0xMicsICcwJyk7CitzaG91bGRCZSgn
bTIubTEzJywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tMTQnLCAnMCcpOworc2hvdWxkQmUoJ20yLm0y
MScsICcwJyk7CitzaG91bGRCZSgnbTIubTIyJywgJzEnKTsKK3Nob3VsZEJlKCdtMi5tMjMnLCAn
MCcpOworc2hvdWxkQmUoJ20yLm0yNCcsICcwJyk7CitzaG91bGRCZSgnbTIubTMxJywgJzAnKTsK
K3Nob3VsZEJlKCdtMi5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20yLm0zMycsICcxJyk7CitzaG91
bGRCZSgnbTIubTM0JywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tNDEnLCAnMTAnKTsKK3Nob3VsZEJl
KCdtMi5tNDInLCAnMjAnKTsKK3Nob3VsZEJlKCdtMi5tNDMnLCAnMzAnKTsKK3Nob3VsZEJlKCdt
Mi5tNDQnLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Yg
dHJhbnNsYXRlIik7CitzaG91bGRCZSgnbS5tMTEnLCAnMScpOworc2hvdWxkQmUoJ20ubTEyJywg
JzAnKTsKK3Nob3VsZEJlKCdtLm0xMycsICcwJyk7CitzaG91bGRCZSgnbS5tMTQnLCAnMCcpOwor
c2hvdWxkQmUoJ20ubTIxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0yMicsICcxJyk7CitzaG91bGRC
ZSgnbS5tMjMnLCAnMCcpOworc2hvdWxkQmUoJ20ubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm0z
MScsICcwJyk7CitzaG91bGRCZSgnbS5tMzInLCAnMCcpOworc2hvdWxkQmUoJ20ubTMzJywgJzEn
KTsKK3Nob3VsZEJlKCdtLm0zNCcsICcwJyk7CitzaG91bGRCZSgnbS5tNDEnLCAnMCcpOworc2hv
dWxkQmUoJ20ubTQyJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MycsICcwJyk7CitzaG91bGRCZSgn
bS5tNDQnLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBzY2FsZSIpOworbSA9IG5l
dyBXZWJLaXRDU1NNYXRyaXgoKTsKK20yID0gbS5zY2FsZSgxMCwgMjAsIDMwKTsKK3Nob3VsZEJl
KCdtMi5tMTEnLCAnMTAnKTsKK3Nob3VsZEJlKCdtMi5tMTInLCAnMCcpOworc2hvdWxkQmUoJ20y
Lm0xMycsICcwJyk7CitzaG91bGRCZSgnbTIubTE0JywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tMjEn
LCAnMCcpOworc2hvdWxkQmUoJ20yLm0yMicsICcyMCcpOworc2hvdWxkQmUoJ20yLm0yMycsICcw
Jyk7CitzaG91bGRCZSgnbTIubTI0JywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tMzEnLCAnMCcpOwor
c2hvdWxkQmUoJ20yLm0zMicsICcwJyk7CitzaG91bGRCZSgnbTIubTMzJywgJzMwJyk7CitzaG91
bGRCZSgnbTIubTM0JywgJzAnKTsKK3Nob3VsZEJlKCdtMi5tNDEnLCAnMCcpOworc2hvdWxkQmUo
J20yLm00MicsICcwJyk7CitzaG91bGRCZSgnbTIubTQzJywgJzAnKTsKK3Nob3VsZEJlKCdtMi5t
NDQnLCAnMScpOworCitkZWJ1ZygiIik7CitkZWJ1ZygiVGVzdCBpbW11dGFiaWxpdHkgb2Ygc2Nh
bGUiKTsKK3Nob3VsZEJlKCdtLm0xMScsICcxJyk7CitzaG91bGRCZSgnbS5tMTInLCAnMCcpOwor
c2hvdWxkQmUoJ20ubTEzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xNCcsICcwJyk7CitzaG91bGRC
ZSgnbS5tMjEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIyJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0y
MycsICcwJyk7CitzaG91bGRCZSgnbS5tMjQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMxJywgJzAn
KTsKK3Nob3VsZEJlKCdtLm0zMicsICcwJyk7CitzaG91bGRCZSgnbS5tMzMnLCAnMScpOworc2hv
dWxkQmUoJ20ubTM0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MScsICcwJyk7CitzaG91bGRCZSgn
bS5tNDInLCAnMCcpOworc2hvdWxkQmUoJ20ubTQzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00NCcs
ICcxJyk7CisKK2RlYnVnKCIiKTsKK2RlYnVnKCJUZXN0IHJvdGF0ZSIpOworbSA9IG5ldyBXZWJL
aXRDU1NNYXRyaXgoKTsKK20yID0gbS5yb3RhdGUoMTAsIDIwLCAzMCk7CitzaG91bGRCZSgncGFy
c2VGbG9hdChtMi5tMTEudG9QcmVjaXNpb24oNikpJywgJzAuODEzNzk4Jyk7CitzaG91bGRCZSgn
cGFyc2VGbG9hdChtMi5tMTIudG9QcmVjaXNpb24oNikpJywgJzAuNDY5ODQ2Jyk7CitzaG91bGRC
ZSgncGFyc2VGbG9hdChtMi5tMTMudG9QcmVjaXNpb24oNikpJywgJy0wLjM0MjAyJyk7CitzaG91
bGRCZSgncGFyc2VGbG9hdChtMi5tMTQudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3Nob3VsZEJl
KCdwYXJzZUZsb2F0KG0yLm0yMS50b1ByZWNpc2lvbig2KSknLCAnLTAuNDQwOTcnKTsKK3Nob3Vs
ZEJlKCdwYXJzZUZsb2F0KG0yLm0yMi50b1ByZWNpc2lvbig2KSknLCAnMC44ODI1NjQnKTsKK3No
b3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yMy50b1ByZWNpc2lvbig2KSknLCAnMC4xNjMxNzYnKTsK
K3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yNC50b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobTIubTMxLnRvUHJlY2lzaW9uKDYpKScsICcwLjM3ODUyMicpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTMyLnRvUHJlY2lzaW9uKDYpKScsICcwLjAxODAyODMn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMy50b1ByZWNpc2lvbig2KSknLCAnMC45MjU0
MTcnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zNC50b1ByZWNpc2lvbig2KSknLCAnMCcp
Oworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQxLnRvUHJlY2lzaW9uKDYpKScsICcwJyk7Citz
aG91bGRCZSgncGFyc2VGbG9hdChtMi5tNDIudG9QcmVjaXNpb24oNikpJywgJzAnKTsKK3Nob3Vs
ZEJlKCdwYXJzZUZsb2F0KG0yLm00My50b1ByZWNpc2lvbig2KSknLCAnMCcpOworc2hvdWxkQmUo
J3BhcnNlRmxvYXQobTIubTQ0LnRvUHJlY2lzaW9uKDYpKScsICcxJyk7CisKK2RlYnVnKCIiKTsK
K2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiByb3RhdGUiKTsKK3Nob3VsZEJlKCdtLm0xMScs
ICcxJyk7CitzaG91bGRCZSgnbS5tMTInLCAnMCcpOworc2hvdWxkQmUoJ20ubTEzJywgJzAnKTsK
K3Nob3VsZEJlKCdtLm0xNCcsICcwJyk7CitzaG91bGRCZSgnbS5tMjEnLCAnMCcpOworc2hvdWxk
QmUoJ20ubTIyJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0yMycsICcwJyk7CitzaG91bGRCZSgnbS5t
MjQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMxJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0zMicsICcw
Jyk7CitzaG91bGRCZSgnbS5tMzMnLCAnMScpOworc2hvdWxkQmUoJ20ubTM0JywgJzAnKTsKK3No
b3VsZEJlKCdtLm00MScsICcwJyk7CitzaG91bGRCZSgnbS5tNDInLCAnMCcpOworc2hvdWxkQmUo
J20ubTQzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00NCcsICcxJyk7CisKK2RlYnVnKCIiKTsKK2Rl
YnVnKCJUZXN0IHJvdGF0ZUF4aXNBbmdsZSIpOworbSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKTsK
K20yID0gbS5yb3RhdGVBeGlzQW5nbGUoMC43MDcsIDAuNzA3LCAwLjcwNywgNDUpOworc2hvdWxk
QmUoJ3BhcnNlRmxvYXQobTIubTExLnRvUHJlY2lzaW9uKDYpKScsICcwLjgwNDczOCcpOworc2hv
dWxkQmUoJ3BhcnNlRmxvYXQobTIubTEyLnRvUHJlY2lzaW9uKDYpKScsICcwLjUwNTg3OScpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTEzLnRvUHJlY2lzaW9uKDYpKScsICctMC4zMTA2MTcn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0xNC50b1ByZWNpc2lvbig2KSknLCAnMCcpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTIxLnRvUHJlY2lzaW9uKDYpKScsICctMC4zMTA2MTcn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yMi50b1ByZWNpc2lvbig2KSknLCAnMC44MDQ3
MzgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yMy50b1ByZWNpc2lvbig2KSknLCAnMC41
MDU4NzknKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0yNC50b1ByZWNpc2lvbig2KSknLCAn
MCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTMxLnRvUHJlY2lzaW9uKDYpKScsICcwLjUw
NTg3OScpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTMyLnRvUHJlY2lzaW9uKDYpKScsICct
MC4zMTA2MTcnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zMy50b1ByZWNpc2lvbig2KSkn
LCAnMC44MDQ3MzgnKTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm0zNC50b1ByZWNpc2lvbig2
KSknLCAnMCcpOworc2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQxLnRvUHJlY2lzaW9uKDYpKScs
ICcwJyk7CitzaG91bGRCZSgncGFyc2VGbG9hdChtMi5tNDIudG9QcmVjaXNpb24oNikpJywgJzAn
KTsKK3Nob3VsZEJlKCdwYXJzZUZsb2F0KG0yLm00My50b1ByZWNpc2lvbig2KSknLCAnMCcpOwor
c2hvdWxkQmUoJ3BhcnNlRmxvYXQobTIubTQ0LnRvUHJlY2lzaW9uKDYpKScsICcxJyk7CisKK2Rl
YnVnKCIiKTsKK2RlYnVnKCJUZXN0IGltbXV0YWJpbGl0eSBvZiByb3RhdGVBeGlzQW5nbGUiKTsK
K3Nob3VsZEJlKCdtLm0xMScsICcxJyk7CitzaG91bGRCZSgnbS5tMTInLCAnMCcpOworc2hvdWxk
QmUoJ20ubTEzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm0xNCcsICcwJyk7CitzaG91bGRCZSgnbS5t
MjEnLCAnMCcpOworc2hvdWxkQmUoJ20ubTIyJywgJzEnKTsKK3Nob3VsZEJlKCdtLm0yMycsICcw
Jyk7CitzaG91bGRCZSgnbS5tMjQnLCAnMCcpOworc2hvdWxkQmUoJ20ubTMxJywgJzAnKTsKK3No
b3VsZEJlKCdtLm0zMicsICcwJyk7CitzaG91bGRCZSgnbS5tMzMnLCAnMScpOworc2hvdWxkQmUo
J20ubTM0JywgJzAnKTsKK3Nob3VsZEJlKCdtLm00MScsICcwJyk7CitzaG91bGRCZSgnbS5tNDIn
LCAnMCcpOworc2hvdWxkQmUoJ20ubTQzJywgJzAnKTsKK3Nob3VsZEJlKCdtLm00NCcsICcxJyk7
CisKK2RlYnVnKCIiKTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQ+Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="13395"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>