<?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>184131</bug_id>
          
          <creation_ts>2018-03-29 02:41:31 -0700</creation_ts>
          <short_desc>Added UI to show potential regressions in chart with t-testing against segmentations.</short_desc>
          <delta_ts>2018-04-06 13:12:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>dewei_zhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dewei_zhu</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1410228</commentid>
    <comment_count>0</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-03-29 02:41:31 -0700</bug_when>
    <thetext>Added UI to show potential regressions in chart with t-testing against segmentations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410229</commentid>
    <comment_count>1</comment_count>
      <attachid>336761</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-03-29 03:00:56 -0700</bug_when>
    <thetext>Created attachment 336761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410409</commentid>
    <comment_count>2</comment_count>
      <attachid>336807</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-03-29 14:46:20 -0700</bug_when>
    <thetext>Created attachment 336807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410788</commentid>
    <comment_count>3</comment_count>
      <attachid>336807</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-03-30 17:35:07 -0700</bug_when>
    <thetext>Comment on attachment 336807
Patch

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

&gt; Websites/perf.webkit.org/public/shared/statistics.js:113
&gt; +    this.tTestForRangeWithSignificance = function (values, segmentations, significance) {

This is not running t-test. We&apos;re finding ranges which reject null hypothesis based on segmentations.
How about findRangesForChangeDetectionsWithWelchsTTest?

&gt; Websites/perf.webkit.org/public/shared/statistics.js:124
&gt; +            const currentTestingIndex = segmentations[i].seriesIndex;

What does testing index mean? I think this is really a change point: https://en.wikipedia.org/wiki/Change_detection
So it should be named as such: currentChangePoint

&gt; Websites/perf.webkit.org/public/shared/statistics.js:126
&gt; +            const leftBound = segmentations[i - 1].seriesIndex;
&gt; +            const rightBound = segmentations[i + 2].seriesIndex;

Use start/end instead of left/right. &quot;Bound&quot; is ambiguous still.
This should be called previousChangePoint and nextChangePoint respectively.

Do we always include 0 and length - 1 in the segmentations?
If not, we&apos;d not detect a change if the graph had exactly one change point.

&gt; Websites/perf.webkit.org/public/shared/statistics.js:128
&gt; +            for (let leftEdge = currentTestingIndex - 2, rightEdge = currentTestingIndex + 2; leftEdge &gt;= leftBound &amp;&amp; rightEdge &lt;= rightBound; leftEdge--, rightEdge++) {

Why are we always adding &amp; subtracting two?

&gt; Websites/perf.webkit.org/public/shared/statistics.js:129
&gt; +                const result = this.computeWelchsT(values, leftEdge, currentTestingIndex - leftEdge, values, currentTestingIndex, rightEdge - currentTestingIndex, 2 * significance - 1);

What does 2 * significance - 1 mean here?
Are we converting one-sided probability to two-sided probability or something?
If so, we should store that in a local variable with a descriptive name.

&gt; Websites/perf.webkit.org/public/v3/components/chart-pane-base.js:176
&gt; +        if(annotation.task)

Nit: Missing a space between if and (.

&gt; Websites/perf.webkit.org/public/v3/components/time-series-chart.js:159
&gt; +    setSuggestedAnnotations(suggestedAnnotations)
&gt; +    {
&gt; +        this._suggestedAnnoations = suggestedAnnotations;
&gt; +        this._annotationRows = null;
&gt; +        this.enqueueToRender();
&gt; +    }

I don&apos;t think it makes sense for TimeSeriesChart to provide a facility to merge the list of annotations like this.
ChartPane should simply combine the list of analysis tasks &amp; annotations for change point detections in a single array instead.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:50
&gt; +            function valueForIndexInSegmentation(index) {

Where is this function ever used?

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:68
&gt; +                    fillStyle: &apos;#808080&apos;,

Put this in ChartStyles as we talked about it in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411144</commentid>
    <comment_count>4</comment_count>
      <attachid>336999</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2018-04-02 10:53:06 -0700</bug_when>
    <thetext>Created attachment 336999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411999</commentid>
    <comment_count>5</comment_count>
      <attachid>336999</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-04 20:34:15 -0700</bug_when>
    <thetext>Comment on attachment 336999
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:17
&gt; +        (Statistics.new.this.findRangesForChangeDetectionsWithWelchsTTest):

Add a description as to why we&apos;re incrementing / decrementing the index by 2.

&gt; Websites/perf.webkit.org/public/v3/components/chart-pane-base.js:265
&gt; +            this._renderAnnotationsLazily.evaluate(this._tasksForAnnotations, this._detectedAnnotations, this._renderedAnnotations);

Just get the list of change types for each task, and add that to the argument as in:
_renderAnnotationsLazily.evaluate(this._tasksForAnnotations, this._detectedAnnotations, ...this._tasksForAnnotations.map((task) =&gt; task.changeType()));
Alternatively, just re-construct ._tasksForAnnotations or _detectedAnnotations whenever we&apos;re currently setting _renderedAnnotations = false.

&gt; Websites/perf.webkit.org/public/v3/components/chart-pane-base.js:-299
&gt; -                fillStyle: fillStyle,

We should be computing the fill style here instead.

&gt; Websites/perf.webkit.org/public/v3/components/time-series-chart.js:408
&gt; -                context.fillStyle = bar.fillStyle;
&gt; +                context.fillStyle = this._options.annotations.fillStyleForTask(bar.task);

We need to pre-determine the style. TimeSeriesChart shouldn&apos;t be aware of a task.

&gt; Websites/perf.webkit.org/public/v3/models/metric.js:88
&gt; +    summarizeForValues(beforeValue, afterValue, betterDescription, worseDescription)

This is a very vague/generic name. How about labelForDifference?
Also, description is usually used to refer a long paragraph of text.
Why not progressionTypeName and regressionTypeName.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:43
&gt; +        label: &apos;Segmentation with t-test analysis&apos;,

Again, we should call this &quot;Segmentation with Welch&apos;s t-test change detection&quot;

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:52
&gt; +            segmentation.analysisAnnotations = Statistics.findRangesForChangeDetectionsWithWelchsTTest(timeSeries.values(), segmentation, parameters[parameters.length - 1]).map((range) =&gt; {

Please wrap the line earlier or store the arguments in a local variable so that this code is easier to read.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:68
&gt; +            {label: &quot;t-test significance&quot;, value: 0.99, type: &apos;select&apos;, options: Statistics.supportedOneSideTTestProbabilities()},

We don&apos;t need to have both &quot;options&quot; and &quot;type&quot;. Just detect the presence of &quot;options&quot;.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:450
&gt; +                    if (parameter.type == &apos;select&apos;) {

Just do: &quot;options&quot; in parameter.

&gt; Websites/perf.webkit.org/public/v3/pages/chart-pane.js:453
&gt; +                        const select = element(&apos;select&apos;,
&gt; +                            parameter.options.map((option) =&gt; element(&apos;option&apos;,
&gt; +                                {value: option, selected: option == parameter.value}, option)));

Can we just do this in one or two lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1412464</commentid>
    <comment_count>6</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2018-04-06 13:12:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/39199641&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336761</attachid>
            <date>2018-03-29 03:00:56 -0700</date>
            <delta_ts>2018-03-29 14:46:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184131-20180329030055.patch</filename>
            <type>text/plain</type>
            <size>24769</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDcwCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlMTAzMTlkYzM1MmU2Nzg2OTE1MmEwYTUxZDQ0ODkxN2Y5ZDJmZTExLi5kZmU1M2FlMTJj
MzllNTk4NmI5YmVmOTIxOGFjMTY5ZmQ3ZDk3ZDgwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wMy0yOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBVSSB0byBzaG93IHBvdGVudGlhbCByZWdyZXNz
aW9ucyBpbiBjaGFydCB3aXRoIHQtdGVzdGluZyBhZ2FpbnN0IHNlZ21lbnRhdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxMzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBVSSBpbiB0
aGUgY2hhcnQtcGFuZSBzbyB0aGF0IHVzZXIgY2FuIHVzZSBuZXcgb3B0aW9uIGluIHRyZW5kbGlu
ZSB3aGljaCBub3Qgb25seQorICAgICAgICBzaG93cyB0aGUgc2VnbWVudGF0aW9uLCBidXQgYWxz
byB0LXRlc3QgYWdhaW5zdCBwb3RlbnRpYWwgY2hhbmdlcyBpbmRpY2F0ZWQgYnkgc2VnbWVudGF0
aW9uLgorCisgICAgICAgICogcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzOiBBZGRlZCBhIGZ1
bmN0aW9uIHRvIHQtdGVzdCBjZXJ0YWluIHJhbmdlIGJhc2VkIG9uIHNlZ21lbnRhdGlvbiByZXN1
bHRzLgorICAgICAgICAoU3RhdGlzdGljcy5uZXcudGhpcy5zdXBwb3J0ZWRPbmVTaWRlVFRlc3RQ
cm9iYWJpbGl0aWVzKToKKyAgICAgICAgKFN0YXRpc3RpY3MubmV3LnRoaXMudFRlc3RGb3JSYW5n
ZVdpdGhTaWduaWZpY2FuY2UpOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0
LXBhbmUtYmFzZS5qczogV2lsbCBzZWxlY3QgdGhlIHJhbmdlIGlmIHVzZXIgY2xpY2tzIG9uIGEg
c3VnZ2VzdGVkIGFubm90YXRpb24uCisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlwZS5j
b25maWd1cmUpOgorICAgICAgICAoQ2hhcnRQYW5lQmFzZS5wcm90b3R5cGUuX2RpZENsaWNrQW5u
b3RhdGlvbik6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtdGlt
ZS1zZXJpZXMtY2hhcnQuanM6CisgICAgICAgIChJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydC5w
cm90b3R5cGUuX2ZpbmRBbm5vdGF0aW9uKTogQWxzbyBuZWVkIHRvIHNlYXJjaCBhbW9uZyBzdWdn
ZXN0ZWQgYW5ub3RhaW9ucy4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90aW1lLXNl
cmllcy1jaGFydC5qczogSW50cm9kdWNlZCAnc3VnZ2VzdGVkIGFubm90YWlvbicgd2hpY2ggZG9l
cyBub3QgaGF2ZSBhbiBleGlzdGluZyB0YXNrIGFuZCBpcyBzdWdnZXN0ZWQgYnkgdC10ZXN0IGJh
c2VkIG9uIHNlZ21lbnRhdGlvbi4KKyAgICAgICAgKFRpbWVTZXJpZXNDaGFydCk6CisgICAgICAg
IChUaW1lU2VyaWVzQ2hhcnQucHJvdG90eXBlLnNldFN1Z2dlc3RlZEFubm90YXRpb25zKToKKyAg
ICAgICAgKFRpbWVTZXJpZXNDaGFydC5wcm90b3R5cGUuYWxsQW5ub3RhdGlvbnMpOiBSZXR1cm5z
IGJvdGggYW5ub3RhdGlvbnMgd2l0aCBhbmQgd2l0aG91dCBhbmFseXNpcyB0YXNrLgorICAgICAg
ICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5fbGF5b3V0QW5ub3RhdGlvbkJhcnMpOiBTaG91
bGQgdGFrZSBhbGwgYW5ub3RhdGlvbnMgaW4gdGhlIGNhbGN1bGF0aW9uLgorICAgICAgICAqIHB1
YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzOgorICAgICAgICAoTWVhc3VyZW1lbnRT
ZXQucHJvdG90eXBlLm1ldHJpY0lkKTogUmV0dXJucyBtZXRyaWMgaWQuCisgICAgICAgICogcHVi
bGljL3YzL21vZGVscy9tZXRyaWMuanM6CisgICAgICAgIChNZXRyaWMucHJvdG90eXBlLnN1bW1h
cml6ZUZvclZhbHVlcyk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbiB0byBzdW1tYXJpemUgYSBnaXZl
biB2YWx1ZQorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qczoKKyAgICAg
ICAgKFRlc3RHcm91cC5wcm90b3R5cGUuY29tcGFyZVRlc3RSZXN1bHRzKTogQWRhcHRlZCB0byB1
c2UgJ01ldHJpYy5zdW1tYXJpemVGb3JWYWx1ZXMnLgorICAgICAgICAqIHB1YmxpYy92My9wYWdl
cy9jaGFydC1wYW5lLmpzOiBBZGRlZCAnU2VnbWVudGF0aW9uIHdpdGggdC10ZXN0IGFuYWx5c2lz
JyB0byAnQ2hhcnRUcmVuZExpbmVUeXBlcycuCisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBl
Ll9yZW5kZXJUcmVuZExpbmVQb3BvdmVyKToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUu
YXN5bmMuX3VwZGF0ZVRyZW5kTGluZSk6IG1ha2UgaXQgYW4gYXN5bmMgZnVuY3Rpb24uCisgICAg
ICAgICogdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzIGZv
ciAndFRlc3RGb3JSYW5nZVdpdGhTaWduaWZpY2FuY2UnLgorCiAyMDE4LTAzLTE5ICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgUGVyZiBidWls
ZGJvdCBzeW5jaW5nIHNjcmlwdHMgZm9yIEJ1aWxkYm90IDAuOQpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL3N0YXRpc3RpY3MuanMKaW5kZXggYzIzMWEx
ZWM0NmFjMDhjNDhkYjMyM2I5OTZjMmI4YjA0NzgwMzA2NC4uM2I5YjRhYWQ3NzFkNzkyODFkM2Rj
MWU0YTgyMDRhOWI1NWEzODQwYSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzCkBAIC0zOSw2ICszOSwxMCBAQCB2YXIgU3Rh
dGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm4gc3VwcG9ydGVkUHJv
YmFiaWxpdGllcwogICAgIH0KIAorICAgIHRoaXMuc3VwcG9ydGVkT25lU2lkZVRUZXN0UHJvYmFi
aWxpdGllcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHREaXN0
cmlidXRpb25CeU9uZVNpZGVkUHJvYmFiaWxpdHkpOworICAgIH0KKwogICAgIC8vIENvbXB1dGVz
IHRoZSBkZWx0YSBkIHMudC4gKG1lYW4gLSBkLCBtZWFuICsgZCkgaXMgdGhlIGNvbmZpZGVuY2Ug
aW50ZXJ2YWwgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2JhYmlsaXR5IGluIE8oMSkuCiAgICAgdGhp
cy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSA9IGZ1bmN0aW9uIChwcm9iYWJpbGl0eSwgbnVtYmVy
T2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgewogICAgICAgICB2YXIgb25lU2lkZWRQcm9iYWJp
bGl0eSA9IHR3b1NpZGVkVG9PbmVTaWRlZFByb2JhYmlsaXR5KHByb2JhYmlsaXR5KTsKQEAgLTEw
Niw2ICsxMTAsMzYgQEAgdmFyIFN0YXRpc3RpY3MgPSBuZXcgKGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgfTsKICAgICB9CiAKKyAgICB0aGlzLnRUZXN0Rm9yUmFuZ2VXaXRoU2lnbmlmaWNhbmNlID0g
ZnVuY3Rpb24gKHZhbHVlcywgc2VnbWVudGF0aW9ucywgc2lnbmlmaWNhbmNlKSB7CisgICAgICAg
IGlmICghdmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBj
b25zdCBzZWxlY3RlZFJhbmdlcyA9IFtdOworCisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpICsg
MiA8IHNlZ21lbnRhdGlvbnMubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgICAgIGxldCBmb3Vu
ZCA9IGZhbHNlOworICAgICAgICAgICAgY29uc3QgcHJldmlvdXNNZWFuID0gc2VnbWVudGF0aW9u
c1tpXS52YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNZWFuID0gc2VnbWVudGF0aW9u
c1tpICsgMV0udmFsdWU7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50TWVhbiAh
PSBwcmV2aW91c01lYW4pOworICAgICAgICAgICAgY29uc3QgY3VycmVudFRlc3RpbmdJbmRleCA9
IHNlZ21lbnRhdGlvbnNbaV0uc2VyaWVzSW5kZXg7CisgICAgICAgICAgICBjb25zdCBsZWZ0Qm91
bmQgPSBzZWdtZW50YXRpb25zW2kgLSAxXS5zZXJpZXNJbmRleDsKKyAgICAgICAgICAgIGNvbnN0
IHJpZ2h0Qm91bmQgPSBzZWdtZW50YXRpb25zW2kgKyAyXS5zZXJpZXNJbmRleDsKKworICAgICAg
ICAgICAgZm9yIChsZXQgbGVmdEVkZ2UgPSBjdXJyZW50VGVzdGluZ0luZGV4IC0gMiwgcmlnaHRF
ZGdlID0gY3VycmVudFRlc3RpbmdJbmRleCArIDI7IGxlZnRFZGdlID49IGxlZnRCb3VuZCAmJiBy
aWdodEVkZ2UgPD0gcmlnaHRCb3VuZDsgbGVmdEVkZ2UtLSwgcmlnaHRFZGdlKyspIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbXB1dGVXZWxjaHNUKHZhbHVlcywgbGVm
dEVkZ2UsIGN1cnJlbnRUZXN0aW5nSW5kZXggLSBsZWZ0RWRnZSwgdmFsdWVzLCBjdXJyZW50VGVz
dGluZ0luZGV4LCByaWdodEVkZ2UgLSBjdXJyZW50VGVzdGluZ0luZGV4LCAyICogc2lnbmlmaWNh
bmNlIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zaWduaWZpY2FudGx5RGlmZmVy
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2VzLnB1c2goW2xlZnRFZGdl
LCByaWdodEVkZ2UgLSAxXSk7CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFmb3VuZCAmJiBTdGF0aXN0aWNzLmRlYnVnZ2luZ1Rlc3RpbmdS
YW5nZU5vbWluYXRpb24pCisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBm
aW5kIGEgdGVzdGluZyByYW5nZSBhdCcsIGN1cnJlbnRUZXN0aW5nSW5kZXgsICdjaGFuZ2luZyBm
cm9tJywgcHJldmlvdXNNZWFuLCAndG8nLCBjdXJyZW50TWVhbik7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gc2VsZWN0ZWRSYW5nZXM7CisgICAgfTsKKwogICAgIGZ1bmN0aW9uIHNhbXBs
ZU1lYW5BbmRWYXJpYW5jZUZvclZhbHVlcyh2YWx1ZXMsIHN0YXJ0SW5kZXgsIGxlbmd0aCkgewog
ICAgICAgICB2YXIgc3VtID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29t
cG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpzCmluZGV4IDE2Y2UyMDdmNzc0YTI5
NzdiOTdlODg0NjEwMmU5MzVkYTY2N2UzY2UuLjMxNjgzOGJlOGE4MjIzNmY1MTkyNTczZWE2M2Iw
MWFhODg3MTRhMGQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvY29tcG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcwpAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBDaGFydFBhbmVCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAg
ICAgIHRoaXMuX21haW5DaGFydC5saXN0ZW5Ub0FjdGlvbignaW5kaWNhdG9yQ2hhbmdlJywgdGhp
cy5faW5kaWNhdG9yRGlkQ2hhbmdlLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9tYWluQ2hh
cnQubGlzdGVuVG9BY3Rpb24oJ3NlbGVjdGlvbkNoYW5nZScsIHRoaXMuX21haW5TZWxlY3Rpb25E
aWRDaGFuZ2UuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX21haW5DaGFydC5saXN0ZW5Ub0Fj
dGlvbignem9vbScsIHRoaXMuX21haW5TZWxlY3Rpb25EaWRab29tLmJpbmQodGhpcykpOwotICAg
ICAgICB0aGlzLl9tYWluQ2hhcnQubGlzdGVuVG9BY3Rpb24oJ2Fubm90YXRpb25DbGljaycsIHRo
aXMuX29wZW5BbmFseXNpc1Rhc2suYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX21haW5DaGFy
dC5saXN0ZW5Ub0FjdGlvbignYW5ub3RhdGlvbkNsaWNrJywgdGhpcy5fZGlkQ2xpY2tBbm5vdGF0
aW9uLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2UodGhpcy5jb250ZW50
KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtbWFpbicpLCB0aGlzLl9tYWluQ2hhcnQpOwog
CiAgICAgICAgIHRoaXMuX3JldmlzaW9uUmFuZ2UgPSBuZXcgQ2hhcnRSZXZpc2lvblJhbmdlKHRo
aXMuX21haW5DaGFydCk7CkBAIC0xNzEsNiArMTcxLDE4IEBAIGNsYXNzIENoYXJ0UGFuZUJhc2Ug
ZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsK
ICAgICB9CiAKKyAgICBfZGlkQ2xpY2tBbm5vdGF0aW9uKGFubm90YXRpb24pCisgICAgeworICAg
ICAgICBpZihhbm5vdGF0aW9uLnRhc2spCisgICAgICAgICAgICB0aGlzLl9vcGVuQW5hbHlzaXNU
YXNrKGFubm90YXRpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IG5ld1Nl
bGVjdGlvbiA9IFthbm5vdGF0aW9uLnN0YXJ0VGltZSwgYW5ub3RhdGlvbi5lbmRUaW1lXTsKKyAg
ICAgICAgICAgIHRoaXMuX21haW5DaGFydC5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKKyAg
ICAgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2hhcnQuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwg
dGhpcyk7CisgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgX29wZW5BbmFseXNpc1Rhc2soYW5ub3RhdGlvbikKICAgICB7CiAgICAgICAg
IHZhciByb3V0ZXIgPSB0aGlzLnJvdXRlcigpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ludGVyYWN0aXZlLXRpbWUtc2VyaWVzLWNo
YXJ0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2lu
dGVyYWN0aXZlLXRpbWUtc2VyaWVzLWNoYXJ0LmpzCmluZGV4IGNmNGFlZjEzZjQ4MmQxMWNmMzk1
YWFkYjliNDkzYjk0N2ZkYzhlYjMuLjUwODhkYzI5OTQxNzEyNDZlNzRhZWE2OTlmNzM5ZmJmYWQz
ZjQwZWUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29t
cG9uZW50cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1jaGFydC5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtdGltZS1zZXJp
ZXMtY2hhcnQuanMKQEAgLTMzOCwxMCArMzM4LDExIEBAIGNsYXNzIEludGVyYWN0aXZlVGltZVNl
cmllc0NoYXJ0IGV4dGVuZHMgVGltZVNlcmllc0NoYXJ0IHsKIAogICAgIF9maW5kQW5ub3RhdGlv
bihjdXJzb3JMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fYW5ub3RhdGlvbnMp
CisgICAgICAgIGNvbnN0IGFsbEFubm90YXRpb25zID0gdGhpcy5hbGxBbm5vdGF0aW9ucygpOwor
ICAgICAgICBpZiAoIWFsbEFubm90YXRpb25zLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCi0gICAgICAgIGZvciAodmFyIGl0ZW0gb2YgdGhpcy5fYW5ub3RhdGlvbnMpIHsKKyAg
ICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFsbEFubm90YXRpb25zKSB7CiAgICAgICAgICAgICBp
ZiAoaXRlbS54IDw9IGN1cnNvckxvY2F0aW9uLnggJiYgY3Vyc29yTG9jYXRpb24ueCA8PSBpdGVt
LnggKyBpdGVtLndpZHRoCiAgICAgICAgICAgICAgICAgJiYgaXRlbS55IDw9IGN1cnNvckxvY2F0
aW9uLnkgJiYgY3Vyc29yTG9jYXRpb24ueSA8PSBpdGVtLnkgKyBpdGVtLmhlaWdodCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gaXRlbTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFydC5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFydC5q
cwppbmRleCAyYjQyYmZkZDI5ODljMzI4YmMxMzdiZmQzN2E1N2YwMWNhNDg4NWQ0Li4yNjJkYjQ0
MTRlNjQ5ZGMxNmMyODI1N2MwMmQ5YTA2NjcyNGI5MmYzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMK
KysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3RpbWUt
c2VyaWVzLWNoYXJ0LmpzCkBAIC0xMiw2ICsxMiw3IEBAIGNsYXNzIFRpbWVTZXJpZXNDaGFydCBl
eHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB0aGlzLl9yZW5kZXJlZFRyZW5kTGluZXMg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fdmFsdWVSYW5nZUNhY2hlID0gbnVsbDsKICAgICAgICAg
dGhpcy5fYW5ub3RhdGlvbnMgPSBudWxsOworICAgICAgICB0aGlzLl9zdWdnZXN0ZWRBbm5vYXRp
b25zID0gbnVsbDsKICAgICAgICAgdGhpcy5fYW5ub3RhdGlvblJvd3MgPSBudWxsOwogICAgICAg
ICB0aGlzLl9zdGFydFRpbWUgPSBudWxsOwogICAgICAgICB0aGlzLl9lbmRUaW1lID0gbnVsbDsK
QEAgLTE1MCw2ICsxNTEsMTggQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMgQ29tcG9u
ZW50QmFzZSB7CiAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgfQogCisgICAg
c2V0U3VnZ2VzdGVkQW5ub3RhdGlvbnMoc3VnZ2VzdGVkQW5ub3RhdGlvbnMpCisgICAgeworICAg
ICAgICB0aGlzLl9zdWdnZXN0ZWRBbm5vYXRpb25zID0gc3VnZ2VzdGVkQW5ub3RhdGlvbnM7Cisg
ICAgICAgIHRoaXMuX2Fubm90YXRpb25Sb3dzID0gbnVsbDsKKyAgICAgICAgdGhpcy5lbnF1ZXVl
VG9SZW5kZXIoKTsKKyAgICB9CisKKyAgICBhbGxBbm5vdGF0aW9ucygpCisgICAgeworICAgICAg
ICByZXR1cm4gKHRoaXMuX2Fubm90YXRpb25zIHx8IFtdKS5jb25jYXQodGhpcy5fc3VnZ2VzdGVk
QW5ub2F0aW9ucyB8fCBbXSk7CisgICAgfQorCiAgICAgcmVuZGVyKCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fc3RhcnRUaW1lIHx8ICF0aGlzLl9lbmRUaW1lKQpAQCAtMjY0LDcgKzI3Nyw4
IEBAIGNsYXNzIFRpbWVTZXJpZXNDaGFydCBleHRlbmRzIENvbXBvbmVudEJhc2UgewogCiAgICAg
X2xheW91dEFubm90YXRpb25CYXJzKG1ldHJpY3MpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMu
X2Fubm90YXRpb25zIHx8ICF0aGlzLl9vcHRpb25zLmFubm90YXRpb25zKQorICAgICAgICBjb25z
dCBhbGxBbm5vdGF0aW9ucyA9IHRoaXMuYWxsQW5ub3RhdGlvbnMoKTsKKyAgICAgICAgaWYgKCFh
bGxBbm5vdGF0aW9ucy5sZW5ndGggfHwgIXRoaXMuX29wdGlvbnMuYW5ub3RhdGlvbnMpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdmFyIGJhckhlaWdodCA9IHRoaXMuX29w
dGlvbnMuYW5ub3RhdGlvbnMuYmFySGVpZ2h0OwpAQCAtMjgwLDcgKzI5NCw3IEBAIGNsYXNzIFRp
bWVTZXJpZXNDaGFydCBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB2YXIgbWluV2lk
dGggPSB0aGlzLl9vcHRpb25zLmFubm90YXRpb25zLm1pbldpZHRoOwogCiAgICAgICAgIC8vICgx
KSBFeHBhbmQgdGhlIHdpZHRoIG9mIGVhY2ggYmFyIHRvIGhpdCB0aGUgbWluaW11bSB3aWR0aCBh
bmQgc29ydCB0aGVtIGJ5IGxlZnQgZWRnZXMuCi0gICAgICAgIHRoaXMuX2Fubm90YXRpb25zLmZv
ckVhY2goZnVuY3Rpb24gKGFubm90YXRpb24pIHsKKyAgICAgICAgYWxsQW5ub3RhdGlvbnMuZm9y
RWFjaChmdW5jdGlvbiAoYW5ub3RhdGlvbikgewogICAgICAgICAgICAgdmFyIHgxID0gbWV0cmlj
cy50aW1lVG9YKGFubm90YXRpb24uc3RhcnRUaW1lKTsKICAgICAgICAgICAgIHZhciB4MiA9IG1l
dHJpY3MudGltZVRvWChhbm5vdGF0aW9uLmVuZFRpbWUpOwogICAgICAgICAgICAgaWYgKHgyIC0g
eDEgPCBtaW5XaWR0aCkgewpAQCAtMjkwLDcgKzMwNCw3IEBAIGNsYXNzIFRpbWVTZXJpZXNDaGFy
dCBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICAgICAgYW5ub3RhdGlvbi54ID0geDE7
CiAgICAgICAgICAgICBhbm5vdGF0aW9uLndpZHRoID0geDIgLSB4MTsKICAgICAgICAgfSk7Ci0g
ICAgICAgIHZhciBzb3J0ZWRBbm5vdGF0aW9ucyA9IHRoaXMuX2Fubm90YXRpb25zLnNvcnQoZnVu
Y3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEueCAtIGIueCB9KTsKKyAgICAgICAgdmFyIHNvcnRlZEFu
bm90YXRpb25zID0gYWxsQW5ub3RhdGlvbnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4g
YS54IC0gYi54IH0pOwogCiAgICAgICAgIC8vICgyKSBGb3IgZWFjaCBiYXIsIGZpbmQgdGhlIGZp
cnN0IHJvdyBpbiB3aGljaCB0aGUgbGFzdCBiYXIncyByaWdodCBlZGdlIGFwcGVhcgogICAgICAg
ICAvLyBvbiB0aGUgbGVmdCBvZiB0aGUgYmFyIGFzIGVhY2ggcm93IGNvbnRhaW5zIG5vbi1vdmVy
bGFwcGluZyBiYXJzIGluIHRoZSBhY2VuZGluZyB4IG9yZGVyLgpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0
LmpzCmluZGV4IGEyYmQ2Y2I0MGZmMmE1MmE4NzhjMDhkYWMxNjAzOWNmYzA3NGY2YTQuLmFjNGIy
NDU5MGJjZjFlZjhjMTMyOTljYTFmMmIzMGY5YTc1MmRiMTkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1z
ZXQuanMKQEAgLTIyLDYgKzIyLDcgQEAgY2xhc3MgTWVhc3VyZW1lbnRTZXQgewogICAgIH0KIAog
ICAgIHBsYXRmb3JtSWQoKSB7IHJldHVybiB0aGlzLl9wbGF0Zm9ybUlkOyB9CisgICAgbWV0cmlj
SWQoKSB7IHJldHVybiB0aGlzLl9tZXRyaWNJZDsgfQogCiAgICAgc3RhdGljIGZpbmRTZXQocGxh
dGZvcm1JZCwgbWV0cmljSWQsIGxhc3RNb2RpZmllZCkKICAgICB7CkBAIC0yMjUsOCArMjI2LDgg
QEAgY2xhc3MgTWVhc3VyZW1lbnRTZXQgewogICAgICAgICAgICAgdmFyIHNlZ21lbnRhdGlvblNl
cmllcyA9IFtdOwogICAgICAgICAgICAgdmFyIGFkZFNlZ21lbnQgPSBmdW5jdGlvbiAoc3RhcnRp
bmdQb2ludCwgZW5kaW5nUG9pbnQpIHsKICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBTdGF0
aXN0aWNzLm1lYW4odGltZVNlcmllcy52YWx1ZXNCZXR3ZWVuUmFuZ2Uoc3RhcnRpbmdQb2ludC5z
ZXJpZXNJbmRleCwgZW5kaW5nUG9pbnQuc2VyaWVzSW5kZXgpKTsKLSAgICAgICAgICAgICAgICBz
ZWdtZW50YXRpb25TZXJpZXMucHVzaCh7dmFsdWU6IHZhbHVlLCB0aW1lOiBzdGFydGluZ1BvaW50
LnRpbWUsIGludGVydmFsOiBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9fSk7Ci0gICAgICAg
ICAgICAgICAgc2VnbWVudGF0aW9uU2VyaWVzLnB1c2goe3ZhbHVlOiB2YWx1ZSwgdGltZTogZW5k
aW5nUG9pbnQudGltZSwgaW50ZXJ2YWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH19KTsK
KyAgICAgICAgICAgICAgICBzZWdtZW50YXRpb25TZXJpZXMucHVzaCh7dmFsdWU6IHZhbHVlLCB0
aW1lOiBzdGFydGluZ1BvaW50LnRpbWUsIHNlcmllc0luZGV4OiBzdGFydGluZ1BvaW50LnNlcmll
c0luZGV4LCBpbnRlcnZhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfX0pOworICAgICAg
ICAgICAgICAgIHNlZ21lbnRhdGlvblNlcmllcy5wdXNoKHt2YWx1ZTogdmFsdWUsIHRpbWU6IGVu
ZGluZ1BvaW50LnRpbWUsIHNlcmllc0luZGV4OiBlbmRpbmdQb2ludC5zZXJpZXNJbmRleCwgaW50
ZXJ2YWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH19KTsKICAgICAgICAgICAgIH07CiAK
ICAgICAgICAgICAgIHZhciBzdGFydGluZ0luZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21ldHJpYy5qcyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21ldHJpYy5qcwppbmRleCBlNDNhZjJjMzEx
ZTc0N2ExZDQ1NTg3MjE1YWM5MjhmM2MwZjg4ZGY0Li4zZTg2OTk4OThmM2Y2MTgwMjk3NTNmZmFl
MDUxOWE2NjQ0ZjA1MDJmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL21vZGVscy9tZXRyaWMuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1
YmxpYy92My9tb2RlbHMvbWV0cmljLmpzCkBAIC04NSw2ICs4NSwxNSBAQCBjbGFzcyBNZXRyaWMg
ZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAgICAgcmV0dXJuIHVuaXQgIT0gJ2ZwcycgJiYg
dW5pdCAhPSAnL3MnICYmIHVuaXQgIT0gJ3B0JzsKICAgICB9CiAKKyAgICBzdW1tYXJpemVGb3JW
YWx1ZXMoYmVmb3JlVmFsdWUsIGFmdGVyVmFsdWUsIGJldHRlckRlc2NyaXB0aW9uLCB3b3JzZURl
c2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgY29uc3QgZGlmZiA9IGFmdGVyVmFsdWUgLSBiZWZv
cmVWYWx1ZTsKKyAgICAgICAgY29uc3QgY2hhbmdlVHlwZSA9IGRpZmYgPCAwID09IHRoaXMuaXNT
bWFsbGVyQmV0dGVyKCkgPyBiZXR0ZXJEZXNjcmlwdGlvbiA6IHdvcnNlRGVzY3JpcHRpb247Cisg
ICAgICAgIGNvbnN0IHJlbGF0aXZlQ2hhbmdlID0gZGlmZiAvIGJlZm9yZVZhbHVlICogMTAwOwor
ICAgICAgICBjb25zdCBjaGFuZ2VMYWJlbCA9IE1hdGguYWJzKHJlbGF0aXZlQ2hhbmdlKS50b0Zp
eGVkKDIpICsgJyUgJyArIGNoYW5nZVR5cGU7CisgICAgICAgIHJldHVybiB7Y2hhbmdlVHlwZSwg
cmVsYXRpdmVDaGFuZ2UsIGNoYW5nZUxhYmVsfTsKKyAgICB9CisKICAgICBtYWtlRm9ybWF0dGVy
KHNpZ0ZpZywgYWx3YXlzU2hvd1NpZ24pIHsgcmV0dXJuIE1ldHJpYy5tYWtlRm9ybWF0dGVyKHRo
aXMudW5pdCgpLCBzaWdGaWcsIGFsd2F5c1Nob3dTaWduKTsgfQogCiAgICAgc3RhdGljIG1ha2VG
b3JtYXR0ZXIodW5pdCwgc2lnRmlnID0gMiwgYWx3YXlzU2hvd1NpZ24gPSBmYWxzZSkKZGlmZiAt
LWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3Jv
dXAuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdy
b3VwLmpzCmluZGV4IDBjMGRmYWQ0NzdlMzU3Y2I1NDRkMTMyNzAzY2E2NzJiOGEwMWMyMjUuLjEz
MGU4Zjk5NTk5YjQ0MDg1ZWU5ODM4NGQ5ZjAxM2MxZjMzY2Q5YTQgMTAwNjQ0Ci0tLSBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcwpA
QCAtMTQ0LDE1ICsxNDQsMTIgQEAgY2xhc3MgVGVzdEdyb3VwIGV4dGVuZHMgTGFiZWxlZE9iamVj
dCB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYmVmb3JlVmFsdWVzLmxlbmd0aCAmJiBhZnRl
clZhbHVlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBkaWZmID0gYWZ0ZXJNZWFuIC0gYmVm
b3JlTWVhbjsKLSAgICAgICAgICAgIHZhciBzbWFsbGVySXNCZXR0ZXIgPSBtZXRyaWMuaXNTbWFs
bGVyQmV0dGVyKCk7Ci0gICAgICAgICAgICB2YXIgY2hhbmdlVHlwZSA9IGRpZmYgPCAwID09IHNt
YWxsZXJJc0JldHRlciA/ICdiZXR0ZXInIDogJ3dvcnNlJzsKLSAgICAgICAgICAgIHZhciBjaGFu
Z2VMYWJlbCA9IE1hdGguYWJzKGRpZmYgLyBiZWZvcmVNZWFuICogMTAwKS50b0ZpeGVkKDIpICsg
JyUgJyArIGNoYW5nZVR5cGU7CisgICAgICAgICAgICBjb25zdCBzdW1tYXJ5ID0gbWV0cmljLnN1
bW1hcml6ZUZvclZhbHVlcyhiZWZvcmVNZWFuLCBhZnRlck1lYW4sICdiZXR0ZXInLCAnd29yc2Un
KTsKKyAgICAgICAgICAgIHJlc3VsdC5jaGFuZ2VUeXBlID0gc3VtbWFyeS5jaGFuZ2VUeXBlOwor
ICAgICAgICAgICAgcmVzdWx0LmNoYW5nZUxhYmVsID0gc3VtbWFyeS5jaGFuZ2VMYWJlbDsKICAg
ICAgICAgICAgIHZhciBpc1NpZ25pZmljYW50ID0gU3RhdGlzdGljcy50ZXN0V2VsY2hzVChiZWZv
cmVWYWx1ZXMsIGFmdGVyVmFsdWVzKTsKICAgICAgICAgICAgIHZhciBzaWduaWZpY2FuY2VMYWJl
bCA9IGlzU2lnbmlmaWNhbnQgPyAnc2lnbmlmaWNhbnQnIDogJ2luc2lnbmlmaWNhbnQnOwogCi0g
ICAgICAgICAgICByZXN1bHQuY2hhbmdlVHlwZSA9IGNoYW5nZVR5cGU7Ci0gICAgICAgICAgICBy
ZXN1bHQubGFiZWwgPSBjaGFuZ2VMYWJlbDsKICAgICAgICAgICAgIGlmIChoYXNDb21wbGV0ZWQp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9IGlzU2lnbmlmaWNhbnQgPyByZXN1bHQu
Y2hhbmdlVHlwZSA6ICd1bmNoYW5nZWQnOwogICAgICAgICAgICAgcmVzdWx0LmZ1bGxMYWJlbCA9
IGAke3Jlc3VsdC5sYWJlbH0gKHN0YXRpc3RpY2FsbHkgJHtzaWduaWZpY2FuY2VMYWJlbH0pYDsK
ZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hh
cnQtcGFuZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hh
cnQtcGFuZS5qcwppbmRleCBjNzkxNDg2NjUxZDI3NmQ5YjAyMzE3YmYyYjNiMTYxZGFlZTlhMGFm
Li40NWJhZjM1NTkwYTU1MmUxM2M4ODAxZmNkYjlhMGI5ZDI1ZTkxZWZlIDEwMDY0NAotLS0gYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKKysr
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpz
CkBAIC0zOSw2ICszOSw0NyBAQCBjb25zdCBDaGFydFRyZW5kTGluZVR5cGVzID0gWwogICAgICAg
ICBdCiAgICAgfSwKICAgICB7CisgICAgICAgIGlkOiA2LAorICAgICAgICBsYWJlbDogJ1NlZ21l
bnRhdGlvbiB3aXRoIHQtdGVzdCBhbmFseXNpcycsCisgICAgICAgIGV4ZWN1dGU6IGFzeW5jIGZ1
bmN0aW9uIChzb3VyY2UsIHBhcmFtZXRlcnMpIHsKKyAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRh
dGlvbiA9ICBhd2FpdCBzb3VyY2UubWVhc3VyZW1lbnRTZXQuZmV0Y2hTZWdtZW50YXRpb24oJ3Nl
Z21lbnRUaW1lU2VyaWVzQnlNYXhpbWl6aW5nU2Nod2FyekNyaXRlcmlvbicsIHBhcmFtZXRlcnMs
CisgICAgICAgICAgICAgICAgc291cmNlLnR5cGUsIHNvdXJjZS5pbmNsdWRlT3V0bGllcnMsIHNv
dXJjZS5leHRlbmRUb0Z1dHVyZSk7CisgICAgICAgICAgICBpZiAoIXNlZ21lbnRhdGlvbikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc2VnbWVudGF0aW9uOworCisgICAgICAgICAgICBmdW5jdGlv
biB2YWx1ZUZvckluZGV4SW5TZWdtZW50YXRpb24oaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRhdGlvbi5sZW5ndGggLSAxOyBpKyspeworICAgICAg
ICAgICAgICAgICAgICBpZiAoc2VnbWVudGF0aW9uW2ldLnNlcmllc0luZGV4IDwgaW5kZXggJiYg
c2VnbWVudGF0aW9uW2kgKyAxXS5zZXJpZXNJbmRleCA+IGluZGV4CisgICAgICAgICAgICAgICAg
ICAgICAgICAmJiBzZWdtZW50YXRpb25baV0udmFsdWUgPT0gc2VnbWVudGF0aW9uW2kgKyAxXS52
YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWdtZW50YXRpb25baV0udmFs
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qg
bWV0cmljID0gTWV0cmljLmZpbmRCeUlkKHNvdXJjZS5tZWFzdXJlbWVudFNldC5tZXRyaWNJZCgp
KTsKKyAgICAgICAgICAgIGNvbnN0IHRpbWVTZXJpZXMgPSBzb3VyY2UubWVhc3VyZW1lbnRTZXQu
ZmV0Y2hlZFRpbWVTZXJpZXMoc291cmNlLnR5cGUsIHNvdXJjZS5pbmNsdWRlT3V0bGllcnMsIHNv
dXJjZS5leHRlbmRUb0Z1dHVyZSk7CisgICAgICAgICAgICBzZWdtZW50YXRpb24uYW5hbHlzaXNB
bm5vdGF0aW9ucyA9IFN0YXRpc3RpY3MudFRlc3RGb3JSYW5nZVdpdGhTaWduaWZpY2FuY2UodGlt
ZVNlcmllcy52YWx1ZXMoKSwgc2VnbWVudGF0aW9uLCBwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVu
Z3RoIC0gMV0pLm1hcCgocmFuZ2UpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBbc3RhcnRJ
bmRleCwgZW5kSW5kZXhdID0gcmFuZ2U7CisgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRQb2lu
dCA9IHRpbWVTZXJpZXMuZmluZFBvaW50QnlJbmRleChzdGFydEluZGV4KTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBlbmRQb2ludCA9IHRpbWVTZXJpZXMuZmluZFBvaW50QnlJbmRleChlbmRJbmRl
eCk7CisgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRWYWx1ZSA9IHZhbHVlRm9ySW5kZXhJblNl
Z21lbnRhdGlvbihzdGFydEluZGV4KTsKKyAgICAgICAgICAgICAgICBjb25zdCBlbmRWYWx1ZSA9
IHZhbHVlRm9ySW5kZXhJblNlZ21lbnRhdGlvbihlbmRJbmRleCk7CisgICAgICAgICAgICAgICAg
Y29uc3Qgc3VtbWFyeSA9IG1ldHJpYy5zdW1tYXJpemVGb3JWYWx1ZXMoc3RhcnRWYWx1ZSwgZW5k
VmFsdWUsICdwcm9ncmVzc2lvbicsICdyZWdyZXNzaW9uJyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgdGFzazogbnVsbCwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhcnRUaW1lOiBzdGFydFBvaW50LnRpbWUsCisgICAgICAgICAgICAgICAgICAgIGVuZFRp
bWU6IGVuZFBvaW50LnRpbWUsCisgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgUG90ZW50aWFs
ICR7c3VtbWFyeS5jaGFuZ2VMYWJlbH1gLAorICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6
ICcjODA4MDgwJywKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICByZXR1cm4gc2VnbWVudGF0aW9uOworICAgICAgICB9LAorICAgICAgICBwYXJhbWV0ZXJM
aXN0OiBbCisgICAgICAgICAgICB7bGFiZWw6ICJTZWdtZW50IGNvdW50IHdlaWdodCIsIHZhbHVl
OiAyLjUsIG1pbjogMC4wMSwgbWF4OiAxMCwgc3RlcDogMC4wMX0sCisgICAgICAgICAgICB7bGFi
ZWw6ICJHcmlkIHNpemUiLCB2YWx1ZTogNTAwLCBtaW46IDEwMCwgbWF4OiAxMDAwMCwgc3RlcDog
MTB9LAorICAgICAgICAgICAge2xhYmVsOiAidC10ZXN0IHNpZ25pZmljYW5jZSIsIHZhbHVlOiAw
Ljk5LCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogU3RhdGlzdGljcy5zdXBwb3J0ZWRPbmVTaWRl
VFRlc3RQcm9iYWJpbGl0aWVzKCl9LAorICAgICAgICBdCisgICAgfSwKKyAgICB7CiAgICAgICAg
IGlkOiAxLAogICAgICAgICBsYWJlbDogJ1NpbXBsZSBNb3ZpbmcgQXZlcmFnZScsCiAgICAgICAg
IHBhcmFtZXRlckxpc3Q6IFsKQEAgLTQxNywxMSArNDU4LDIxIEBAIGNsYXNzIENoYXJ0UGFuZSBl
eHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICAgICAgdGhpcy5yZW5kZXJSZXBsYWNlKHRo
aXMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJy50cmVuZC1saW5lLXBhcmFtZXRlci1saXN0Jyks
IFsKICAgICAgICAgICAgICAgICBlbGVtZW50KCdoMycsICdQYXJhbWV0ZXJzJyksCiAgICAgICAg
ICAgICAgICAgZWxlbWVudCgndWwnLCB0aGlzLl90cmVuZExpbmVUeXBlLnBhcmFtZXRlckxpc3Qu
bWFwKGZ1bmN0aW9uIChwYXJhbWV0ZXIsIGluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChwYXJhbWV0ZXIudHlwZSA9PSAnc2VsZWN0JykgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc2VsZWN0ID0gZWxlbWVudCgnc2VsZWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJhbWV0ZXIub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gZWxlbWVudCgnb3B0aW9uJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbHVlOiBvcHRpb24sIHNlbGVjdGVk
OiBvcHRpb24gPT0gcGFyYW1ldGVyLnZhbHVlfSwgb3B0aW9uKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0Lm9uY2hhbmdlID0gc2VsZi5fdHJlbmRMaW5lUGFyYW1ldGVyRGlkQ2hh
bmdlLmJpbmQoc2VsZik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QucGFyYW1ldGVy
SW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50KCds
aScsIGVsZW1lbnQoJ2xhYmVsJywgW3BhcmFtZXRlci5sYWJlbCArICc6ICcsIHNlbGVjdF0pKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1
dGVzID0ge3R5cGU6ICdudW1iZXInfTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbmFt
ZSBpbiBwYXJhbWV0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVd
ID0gcGFyYW1ldGVyW25hbWVdOworCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMudmFs
dWUgPSBjb25maWd1cmVkUGFyYW1ldGVyc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBpbnB1dCA9IGVsZW1lbnQoJ2lucHV0JywgYXR0cmlidXRlcyk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGlucHV0ID0gZWxlbWVudCgnaW5wdXQnLCBhdHRyaWJ1dGVzKTsKICAgICAgICAg
ICAgICAgICAgICAgaW5wdXQucGFyYW1ldGVySW5kZXggPSBpbmRleDsKICAgICAgICAgICAgICAg
ICAgICAgaW5wdXQub25pbnB1dCA9IHNlbGYuX3RyZW5kTGluZVBhcmFtZXRlckRpZENoYW5nZS5i
aW5kKHNlbGYpOwogICAgICAgICAgICAgICAgICAgICBpbnB1dC5vbmNoYW5nZSA9IHNlbGYuX3Ry
ZW5kTGluZVBhcmFtZXRlckRpZENoYW5nZS5iaW5kKHNlbGYpOwpAQCAtNDc1LDcgKzUyNiw3IEBA
IGNsYXNzIENoYXJ0UGFuZSBleHRlbmRzIENoYXJ0UGFuZUJhc2UgewogICAgICAgICB0aGlzLl91
cGRhdGVUcmVuZExpbmUoKTsKICAgICB9CiAKLSAgICBfdXBkYXRlVHJlbmRMaW5lKCkKKyAgICBh
c3luYyBfdXBkYXRlVHJlbmRMaW5lKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbWFpbkNo
YXJ0LnNvdXJjZUxpc3QoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ4NCw3ICs1MzUsNiBA
QCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgdmFyIGN1
cnJlbnRUcmVuZExpbmVUeXBlID0gdGhpcy5fdHJlbmRMaW5lVHlwZSB8fCBDaGFydFRyZW5kTGlu
ZVR5cGVzLkRlZmF1bHRUeXBlOwogICAgICAgICB2YXIgY3VycmVudFRyZW5kTGluZVBhcmFtZXRl
cnMgPSB0aGlzLl90cmVuZExpbmVQYXJhbWV0ZXJzIHx8IHRoaXMuX2RlZmF1bHRQYXJhbWV0ZXJz
Rm9yVHJlbmRMaW5lKGN1cnJlbnRUcmVuZExpbmVUeXBlKTsKICAgICAgICAgdmFyIGN1cnJlbnRU
cmVuZExpbmVWZXJzaW9uID0gdGhpcy5fdHJlbmRMaW5lVmVyc2lvbjsKLSAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOwogICAgICAgICB2YXIgc291cmNlTGlzdCA9IHRoaXMuX21haW5DaGFydC5zb3Vy
Y2VMaXN0KCk7CiAKICAgICAgICAgaWYgKCFjdXJyZW50VHJlbmRMaW5lVHlwZS5leGVjdXRlKSB7
CkBAIC00OTIsMTQgKzU0MiwxNiBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVC
YXNlIHsKICAgICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAvLyBXYWl0IGZvciBhbGwgdHJlbmRsaW5lcyB0byBiZSByZWFkeS4g
T3RoZXJ3aXNlIHdlIG1pZ2h0IHNlZSBGT0Mgd2hlbiB0aGUgZG9tYWluIGlzIGV4cGFuZGVkLgot
ICAgICAgICAgICAgUHJvbWlzZS5hbGwoc291cmNlTGlzdC5tYXAoZnVuY3Rpb24gKHNvdXJjZSwg
c291cmNlSW5kZXgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFRyZW5kTGluZVR5
cGUuZXhlY3V0ZS5jYWxsKG51bGwsIHNvdXJjZSwgY3VycmVudFRyZW5kTGluZVBhcmFtZXRlcnMp
LnRoZW4oZnVuY3Rpb24gKHRyZW5kbGluZVNlcmllcykgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoc2VsZi5fdHJlbmRMaW5lVmVyc2lvbiA9PSBjdXJyZW50VHJlbmRMaW5lVmVyc2lvbikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21haW5DaGFydC5zZXRUcmVuZExpbmUoc291cmNl
SW5kZXgsIHRyZW5kbGluZVNlcmllcyk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICB9KSkudGhlbihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5lbnF1ZXVlVG9S
ZW5kZXIoKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwo
c291cmNlTGlzdC5tYXAoYXN5bmMgKHNvdXJjZSwgc291cmNlSW5kZXgpID0+IHsKKyAgICAgICAg
ICAgICAgICBjb25zdCB0cmVuZGxpbmVTZXJpZXMgPSBhd2FpdCBjdXJyZW50VHJlbmRMaW5lVHlw
ZS5leGVjdXRlLmNhbGwobnVsbCwgc291cmNlLCBjdXJyZW50VHJlbmRMaW5lUGFyYW1ldGVycyk7
CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RyZW5kTGluZVZlcnNpb24gPT0gY3VycmVudFRy
ZW5kTGluZVZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21haW5DaGFydC5zZXRU
cmVuZExpbmUoc291cmNlSW5kZXgsIHRyZW5kbGluZVNlcmllcyk7CisgICAgICAgICAgICAgICAg
aWYgKHRyZW5kbGluZVNlcmllcyAmJiB0cmVuZGxpbmVTZXJpZXMuYW5hbHlzaXNBbm5vdGF0aW9u
cykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWFpbkNoYXJ0LnNldFN1Z2dlc3RlZEFubm90
YXRpb25zKHRyZW5kbGluZVNlcmllcy5hbmFseXNpc0Fubm90YXRpb25zKTsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21haW5DaGFydC5zZXRTdWdnZXN0
ZWRBbm5vdGF0aW9ucyhudWxsKTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIHRoaXMu
ZW5xdWV1ZVRvUmVuZGVyKCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYnNp
dGVzL3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3N0YXRpc3RpY3MtdGVzdHMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzCmluZGV4
IGQ1NjQ0NzFiMjkwZTQ1MmVhOWRmZjVhN2I1YWUzZDYyNzVkYzJkNTkuLjljNjU5YTUzOWVjYmZj
M2NjNDgwMDMyZDJhYzU1ZTk2YmEwYmFmY2QgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Vi
a2l0Lm9yZy91bml0LXRlc3RzL3N0YXRpc3RpY3MtdGVzdHMuanMKKysrIGIvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3VuaXQtdGVzdHMvc3RhdGlzdGljcy10ZXN0cy5qcwpAQCAtMzg4LDQgKzM4
OCw4OSBAQCBkZXNjcmliZSgnU3RhdGlzdGljcycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAg
IGFzc2VydC5kZWVwRXF1YWwoU3RhdGlzdGljcy5zZWdtZW50VGltZVNlcmllc0J5TWF4aW1pemlu
Z1NjaHdhcnpDcml0ZXJpb24odmFsdWVzKSwgWyAwLCA2LCAxNiwgMjYsIDM3IF0pOwogICAgICAg
ICB9KTsKICAgICB9KTsKKworICAgIGRlc2NyaWJlKCd0VGVzdEZvclJhbmdlV2l0aFNpZ25pZmlj
YW5jZScsICgpID0+IHsKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgYXJyYXkg
aWYgdGhlIHZhbHVlIGlzIGVtcHR5IGxpc3QnLCAoKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKFN0YXRpc3RpY3MudFRlc3RGb3JSYW5nZVdpdGhTaWduaWZpY2FuY2UoW10sIFtd
LCAwLjk3NSksIFtdKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4g
YW4gZW1wdHkgYXJyYXkgaWYgc2VnbWVudGF0aW9uIGlzIGVtcHR5IGxpc3QnLCAoKSA9PiB7Cisg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3MudFRlc3RGb3JSYW5nZVdpdGhT
aWduaWZpY2FuY2UoWzEsMiwzXSwgW10sIDAuOTc1KSwgW10pOworICAgICAgICB9KTsKKworICAg
ICAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgcmFuZ2UgaWYgY29tcHV0ZVdlbGNoc1Qgc2hvd3Mg
YSBzaWduaWZpY2FudCBjaGFuZ2UnLCAoKSA9PiB7CisgICAgICAgICAgICBjb25zdCB2YWx1ZXMg
PSBbCisgICAgICAgICAgICAgICAgNzQ3LjMwMzM3NDIzNzQ0LAorICAgICAgICAgICAgICAgIDcz
MS40NzM5MjU4NTI3NiwKKyAgICAgICAgICAgICAgICA3NDMuNjY3NjM1MTMxNjEsCisgICAgICAg
ICAgICAgICAgNzM4LjAyMDU1MzIzNDg3LAorICAgICAgICAgICAgICAgIDczOC4yNTQyNjM0MDg0
MiwKKyAgICAgICAgICAgICAgICA3NDIuMzg2ODAwNDY0NzEsCisgICAgICAgICAgICAgICAgNzMz
LjEzOTIxNzAzMjg0LAorICAgICAgICAgICAgICAgIDczOS4yMjA2OTk2NjE0NywKKyAgICAgICAg
ICAgICAgICA3MzUuNjkyOTU3NDk2MzMsCisgICAgICAgICAgICAgICAgNzQzLjAxNzA1NDcyNTA0
LAorICAgICAgICAgICAgICAgIDc0NS40NTc3ODE0NTMwNiwKKyAgICAgICAgICAgICAgICA3MzEu
MDQ4NDExNTcxNjksCisgICAgICAgICAgICAgICAgNzI5LjQzNzI2NzQ5NzMsCisgICAgICAgICAg
ICAgICAgNzM1LjQ0OTc0MTY1MjcsCisgICAgICAgICAgICAgICAgNzM5LjAyMzA2Njg2NDQsCisg
ICAgICAgICAgICAgICAgNzMwLjkxNzgyOTg5OTA5LAorICAgICAgICAgICAgICAgIDcyMi4xODcy
NTQxMTI3OSwKKyAgICAgICAgICAgICAgICA3MzEuOTYyMjM0NTE3MjgsCisgICAgICAgICAgICAg
ICAgNzMwLjA0MTE5MjE2MTkyLAorICAgICAgICAgICAgICAgIDczMC43ODA4NzY0NjI4NCwKKyAg
ICAgICAgICAgICAgICA3MjkuNjMxNTUyMTAzNjUsCisgICAgICAgICAgICAgICAgNzMwLjE3NTg1
MjAwODc4LAorICAgICAgICAgICAgICAgIDczMy45Mzc2NjA1NDcwNiwKKyAgICAgICAgICAgICAg
ICA3NDAuNzQ5MjA3MTcxOTcsCisgICAgICAgICAgICAgICAgNzUyLjE0NzE4MDIzNjQ3LAorICAg
ICAgICAgICAgICAgIDc2NC40OTk5MDE2NDg0NywKKyAgICAgICAgICAgICAgICA3NjYuMzYxMDA4
Mjg0NzMsCisgICAgICAgICAgICAgICAgNzU2LjIyOTE4ODMyNTIsCisgICAgICAgICAgICAgICAg
NzUwLjE0NTIyNDUxMDk3LAorICAgICAgICAgICAgICAgIDc0OS41NzU5NTA5MjI2NiwKKyAgICAg
ICAgICAgICAgICA3NDguMDM2MjQ4ODE4NjYsCisgICAgICAgICAgICAgICAgNzY5LjQxNTIyMTc2
Mzg2LAorICAgICAgICAgICAgICAgIDc0NC4wNDY2MDQzMDQ1NiwKKyAgICAgICAgICAgICAgICA3
NTEuMTc5Mjc4MDgyNjUsCisgICAgICAgICAgICAgICAgNzUzLjI5OTk2ODU0MDYyLAorICAgICAg
ICAgICAgICAgIDc1Ny4wMTgxMzc1NjkzNiwKKyAgICAgICAgICAgICAgICA3NDYuNjI0MTM4MjA3
NDEsCisgICAgICAgICAgICAgICAgNzQyLjY0NDIwMDYyNzM2LAorICAgICAgICAgICAgICAgIDc1
OC4xMjcyNjM1Mjc3MiwKKyAgICAgICAgICAgICAgICA3NzguMjI3ODQzOTA4OSwKKyAgICAgICAg
ICAgICAgICA3NzUuMTE4MTg1NTQ1NDEsCisgICAgICAgICAgICAgICAgNzc1LjExODE4NTU0NTQx
XTsKKyAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRhdGlvbiA9IFt7CisgICAgICAgICAgICAgICAg
ICAgIHNlcmllc0luZGV4OiAwLAorICAgICAgICAgICAgICAgICAgICB0aW1lOiAxNTA1MTc2MDMw
NjcxLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogNzM2LjUzNjY3MDQ4OTY1NTUsCisgICAg
ICAgICAgICAgICAgICAgIHg6IDM3MC40NTcxNzg5NDA0NTY2LAorICAgICAgICAgICAgICAgICAg
ICB5OiAxODUuNTI2MTMzMzQ1MjAyNDgsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiAxOCwKKyAgICAgICAgICAg
ICAgICAgICAgdGltZTogMTUxNTA3NDM5MTUzNCwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6
IDczNi41MzY2NzA0ODk2NTU1LAorICAgICAgICAgICAgICAgICAgICB4OiA5MTkuNDE4Mzg1Mjcx
NDk0NywKKyAgICAgICAgICAgICAgICAgICAgeTogMTg1LjUyNjEzMzM0NTIwMjQ4CisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNlcmll
c0luZGV4OiAxOCwKKyAgICAgICAgICAgICAgICAgICAgdGltZTogMTUxNTA3NDM5MTUzNCwKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWU6IDc1MC4zNDgzNDI4MzgzMTQyLAorICAgICAgICAgICAg
ICAgICAgICB4OiA5MTkuNDE4Mzg1MjcxNDk0NywKKyAgICAgICAgICAgICAgICAgICAgeTogMTc3
Ljk3MTA5NTM0MDk2NzMsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHNlcmllc0luZGV4OiA0MSwKKyAgICAgICAgICAgICAgICAgICAg
dGltZTogMTU1Mzg1MTY5NTg2OSwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDc1MC4zNDgz
NDI4MzgzMTQyLAorICAgICAgICAgICAgICAgICAgICB4OiAzMDcwLjAwMDI5MDc2NDQ0NiwKKyAg
ICAgICAgICAgICAgICAgICAgeTogMTc3Ljk3MTA5NTM0MDk2NzMsCisgICAgICAgICAgICAgICAg
fV07CisgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3MudFRlc3RGb3JSYW5n
ZVdpdGhTaWduaWZpY2FuY2UodmFsdWVzLCBzZWdtZW50YXRpb24sIDAuOTc1KSwgW1sgNiwgMjkg
XV0pOworICAgICAgICB9KQorICAgIH0pOwogfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336807</attachid>
            <date>2018-03-29 14:46:20 -0700</date>
            <delta_ts>2018-04-02 10:53:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184131-20180329144619.patch</filename>
            <type>text/plain</type>
            <size>25069</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDc1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlMTAzMTlkYzM1MmU2Nzg2OTE1MmEwYTUxZDQ0ODkxN2Y5ZDJmZTExLi5kZmU1M2FlMTJj
MzllNTk4NmI5YmVmOTIxOGFjMTY5ZmQ3ZDk3ZDgwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0wMy0yOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBVSSB0byBzaG93IHBvdGVudGlhbCByZWdyZXNz
aW9ucyBpbiBjaGFydCB3aXRoIHQtdGVzdGluZyBhZ2FpbnN0IHNlZ21lbnRhdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxMzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBVSSBpbiB0
aGUgY2hhcnQtcGFuZSBzbyB0aGF0IHVzZXIgY2FuIHVzZSBuZXcgb3B0aW9uIGluIHRyZW5kbGlu
ZSB3aGljaCBub3Qgb25seQorICAgICAgICBzaG93cyB0aGUgc2VnbWVudGF0aW9uLCBidXQgYWxz
byB0LXRlc3QgYWdhaW5zdCBwb3RlbnRpYWwgY2hhbmdlcyBpbmRpY2F0ZWQgYnkgc2VnbWVudGF0
aW9uLgorCisgICAgICAgICogcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzOiBBZGRlZCBhIGZ1
bmN0aW9uIHRvIHQtdGVzdCBjZXJ0YWluIHJhbmdlIGJhc2VkIG9uIHNlZ21lbnRhdGlvbiByZXN1
bHRzLgorICAgICAgICAoU3RhdGlzdGljcy5uZXcudGhpcy5zdXBwb3J0ZWRPbmVTaWRlVFRlc3RQ
cm9iYWJpbGl0aWVzKToKKyAgICAgICAgKFN0YXRpc3RpY3MubmV3LnRoaXMudFRlc3RGb3JSYW5n
ZVdpdGhTaWduaWZpY2FuY2UpOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0
LXBhbmUtYmFzZS5qczogV2lsbCBzZWxlY3QgdGhlIHJhbmdlIGlmIHVzZXIgY2xpY2tzIG9uIGEg
c3VnZ2VzdGVkIGFubm90YXRpb24uCisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlwZS5j
b25maWd1cmUpOgorICAgICAgICAoQ2hhcnRQYW5lQmFzZS5wcm90b3R5cGUuX2RpZENsaWNrQW5u
b3RhdGlvbik6CisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtdGlt
ZS1zZXJpZXMtY2hhcnQuanM6CisgICAgICAgIChJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydC5w
cm90b3R5cGUuX2ZpbmRBbm5vdGF0aW9uKTogQWxzbyBuZWVkIHRvIHNlYXJjaCBhbW9uZyBzdWdn
ZXN0ZWQgYW5ub3RhaW9ucy4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9uZW50cy90aW1lLXNl
cmllcy1jaGFydC5qczogSW50cm9kdWNlZCAnc3VnZ2VzdGVkIGFubm90YWlvbicgd2hpY2ggZG9l
cyBub3QgaGF2ZSBhbiBleGlzdGluZyB0YXNrIGFuZCBpcyBzdWdnZXN0ZWQgYnkgdC10ZXN0IGJh
c2VkIG9uIHNlZ21lbnRhdGlvbi4KKyAgICAgICAgKFRpbWVTZXJpZXNDaGFydCk6CisgICAgICAg
IChUaW1lU2VyaWVzQ2hhcnQucHJvdG90eXBlLnNldFN1Z2dlc3RlZEFubm90YXRpb25zKToKKyAg
ICAgICAgKFRpbWVTZXJpZXNDaGFydC5wcm90b3R5cGUuYWxsQW5ub3RhdGlvbnMpOiBSZXR1cm5z
IGJvdGggYW5ub3RhdGlvbnMgd2l0aCBhbmQgd2l0aG91dCBhbmFseXNpcyB0YXNrLgorICAgICAg
ICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5fbGF5b3V0QW5ub3RhdGlvbkJhcnMpOiBTaG91
bGQgdGFrZSBhbGwgYW5ub3RhdGlvbnMgaW4gdGhlIGNhbGN1bGF0aW9uLgorICAgICAgICAqIHB1
YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzOgorICAgICAgICAoTWVhc3VyZW1lbnRT
ZXQucHJvdG90eXBlLm1ldHJpY0lkKTogUmV0dXJucyBtZXRyaWMgaWQuCisgICAgICAgICogcHVi
bGljL3YzL21vZGVscy9tZXRyaWMuanM6CisgICAgICAgIChNZXRyaWMucHJvdG90eXBlLnN1bW1h
cml6ZUZvclZhbHVlcyk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbiB0byBzdW1tYXJpemUgYSBnaXZl
biB2YWx1ZQorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qczoKKyAgICAg
ICAgKFRlc3RHcm91cC5wcm90b3R5cGUuY29tcGFyZVRlc3RSZXN1bHRzKTogQWRhcHRlZCB0byB1
c2UgJ01ldHJpYy5zdW1tYXJpemVGb3JWYWx1ZXMnLgorICAgICAgICAqIHB1YmxpYy92My9wYWdl
cy9jaGFydC1wYW5lLmpzOiBBZGRlZCAnU2VnbWVudGF0aW9uIHdpdGggdC10ZXN0IGFuYWx5c2lz
JyB0byAnQ2hhcnRUcmVuZExpbmVUeXBlcycuCisgICAgICAgIChDaGFydFBhbmUucHJvdG90eXBl
Ll9yZW5kZXJUcmVuZExpbmVQb3BvdmVyKToKKyAgICAgICAgKENoYXJ0UGFuZS5wcm90b3R5cGUu
YXN5bmMuX3VwZGF0ZVRyZW5kTGluZSk6IG1ha2UgaXQgYW4gYXN5bmMgZnVuY3Rpb24uCisgICAg
ICAgICogdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzOiBBZGRlZCB1bml0IHRlc3RzIGZv
ciAndFRlc3RGb3JSYW5nZVdpdGhTaWduaWZpY2FuY2UnLgorCiAyMDE4LTAzLTE5ICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgUGVyZiBidWls
ZGJvdCBzeW5jaW5nIHNjcmlwdHMgZm9yIEJ1aWxkYm90IDAuOQpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL3N0YXRpc3RpY3MuanMKaW5kZXggYzIzMWEx
ZWM0NmFjMDhjNDhkYjMyM2I5OTZjMmI4YjA0NzgwMzA2NC4uMTkyYzFmZmY0ZDBlMjVjNDI5YjRh
NDIzOTBmMjQwZTI1YTc0YjEzMiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5v
cmcvcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzCkBAIC0zOSw2ICszOSwxMCBAQCB2YXIgU3Rh
dGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogICAgICAgICByZXR1cm4gc3VwcG9ydGVkUHJv
YmFiaWxpdGllcwogICAgIH0KIAorICAgIHRoaXMuc3VwcG9ydGVkT25lU2lkZVRUZXN0UHJvYmFi
aWxpdGllcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHREaXN0
cmlidXRpb25CeU9uZVNpZGVkUHJvYmFiaWxpdHkpOworICAgIH0KKwogICAgIC8vIENvbXB1dGVz
IHRoZSBkZWx0YSBkIHMudC4gKG1lYW4gLSBkLCBtZWFuICsgZCkgaXMgdGhlIGNvbmZpZGVuY2Ug
aW50ZXJ2YWwgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2JhYmlsaXR5IGluIE8oMSkuCiAgICAgdGhp
cy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSA9IGZ1bmN0aW9uIChwcm9iYWJpbGl0eSwgbnVtYmVy
T2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgewogICAgICAgICB2YXIgb25lU2lkZWRQcm9iYWJp
bGl0eSA9IHR3b1NpZGVkVG9PbmVTaWRlZFByb2JhYmlsaXR5KHByb2JhYmlsaXR5KTsKQEAgLTEw
Niw2ICsxMTAsNDEgQEAgdmFyIFN0YXRpc3RpY3MgPSBuZXcgKGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgfTsKICAgICB9CiAKKyAgICB0aGlzLnRUZXN0Rm9yUmFuZ2VXaXRoU2lnbmlmaWNhbmNlID0g
ZnVuY3Rpb24gKHZhbHVlcywgc2VnbWVudGF0aW9ucywgc2lnbmlmaWNhbmNlKSB7CisgICAgICAg
IGlmICghdmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBj
b25zdCBzZWxlY3RlZFJhbmdlcyA9IFtdOworCisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpICsg
MiA8IHNlZ21lbnRhdGlvbnMubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgICAgIGxldCBmb3Vu
ZCA9IGZhbHNlOworICAgICAgICAgICAgY29uc3QgcHJldmlvdXNNZWFuID0gc2VnbWVudGF0aW9u
c1tpXS52YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNZWFuID0gc2VnbWVudGF0aW9u
c1tpICsgMV0udmFsdWU7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjdXJyZW50TWVhbiAh
PSBwcmV2aW91c01lYW4pOworICAgICAgICAgICAgY29uc3QgY3VycmVudFRlc3RpbmdJbmRleCA9
IHNlZ21lbnRhdGlvbnNbaV0uc2VyaWVzSW5kZXg7CisgICAgICAgICAgICBjb25zdCBsZWZ0Qm91
bmQgPSBzZWdtZW50YXRpb25zW2kgLSAxXS5zZXJpZXNJbmRleDsKKyAgICAgICAgICAgIGNvbnN0
IHJpZ2h0Qm91bmQgPSBzZWdtZW50YXRpb25zW2kgKyAyXS5zZXJpZXNJbmRleDsKKworICAgICAg
ICAgICAgZm9yIChsZXQgbGVmdEVkZ2UgPSBjdXJyZW50VGVzdGluZ0luZGV4IC0gMiwgcmlnaHRF
ZGdlID0gY3VycmVudFRlc3RpbmdJbmRleCArIDI7IGxlZnRFZGdlID49IGxlZnRCb3VuZCAmJiBy
aWdodEVkZ2UgPD0gcmlnaHRCb3VuZDsgbGVmdEVkZ2UtLSwgcmlnaHRFZGdlKyspIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbXB1dGVXZWxjaHNUKHZhbHVlcywgbGVm
dEVkZ2UsIGN1cnJlbnRUZXN0aW5nSW5kZXggLSBsZWZ0RWRnZSwgdmFsdWVzLCBjdXJyZW50VGVz
dGluZ0luZGV4LCByaWdodEVkZ2UgLSBjdXJyZW50VGVzdGluZ0luZGV4LCAyICogc2lnbmlmaWNh
bmNlIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zaWduaWZpY2FudGx5RGlmZmVy
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2VzLnB1c2goeworICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleDogbGVmdEVkZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICBlbmRJbmRleDogcmlnaHRFZGdlIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlZ21lbnRhdGlvblN0YXJ0VmFsdWU6IHByZXZpb3VzTWVhbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlZ21lbnRhdGlvbkVuZFZhbHVlOiBjdXJyZW50TWVhbgorICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIWZvdW5kICYmIFN0YXRpc3RpY3MuZGVidWdnaW5nVGVzdGluZ1JhbmdlTm9taW5h
dGlvbikKKyAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIGZpbmQgYSB0ZXN0
aW5nIHJhbmdlIGF0JywgY3VycmVudFRlc3RpbmdJbmRleCwgJ2NoYW5naW5nIGZyb20nLCBwcmV2
aW91c01lYW4sICd0bycsIGN1cnJlbnRNZWFuKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBzZWxlY3RlZFJhbmdlczsKKyAgICB9OworCiAgICAgZnVuY3Rpb24gc2FtcGxlTWVhbkFuZFZh
cmlhbmNlRm9yVmFsdWVzKHZhbHVlcywgc3RhcnRJbmRleCwgbGVuZ3RoKSB7CiAgICAgICAgIHZh
ciBzdW0gPSAwOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2No
YXJ0LXBhbmUtYmFzZS5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29t
cG9uZW50cy9jaGFydC1wYW5lLWJhc2UuanMKaW5kZXggMTZjZTIwN2Y3NzRhMjk3N2I5N2U4ODQ2
MTAyZTkzNWRhNjY3ZTNjZS4uMzE2ODM4YmU4YTgyMjM2ZjUxOTI1NzNlYTYzYjAxYWE4ODcxNGEw
ZCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25l
bnRzL2NoYXJ0LXBhbmUtYmFzZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL2NvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpzCkBAIC01MSw3ICs1MSw3IEBAIGNs
YXNzIENoYXJ0UGFuZUJhc2UgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsKICAgICAgICAgdGhpcy5f
bWFpbkNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2UnLCB0aGlzLl9pbmRpY2F0
b3JEaWRDaGFuZ2UuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX21haW5DaGFydC5saXN0ZW5U
b0FjdGlvbignc2VsZWN0aW9uQ2hhbmdlJywgdGhpcy5fbWFpblNlbGVjdGlvbkRpZENoYW5nZS5i
aW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fbWFpbkNoYXJ0Lmxpc3RlblRvQWN0aW9uKCd6b29t
JywgdGhpcy5fbWFpblNlbGVjdGlvbkRpZFpvb20uYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMu
X21haW5DaGFydC5saXN0ZW5Ub0FjdGlvbignYW5ub3RhdGlvbkNsaWNrJywgdGhpcy5fb3BlbkFu
YWx5c2lzVGFzay5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbWFpbkNoYXJ0Lmxpc3RlblRv
QWN0aW9uKCdhbm5vdGF0aW9uQ2xpY2snLCB0aGlzLl9kaWRDbGlja0Fubm90YXRpb24uYmluZCh0
aGlzKSk7CiAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNl
bGVjdG9yKCcuY2hhcnQtcGFuZS1tYWluJyksIHRoaXMuX21haW5DaGFydCk7CiAKICAgICAgICAg
dGhpcy5fcmV2aXNpb25SYW5nZSA9IG5ldyBDaGFydFJldmlzaW9uUmFuZ2UodGhpcy5fbWFpbkNo
YXJ0KTsKQEAgLTE3MSw2ICsxNzEsMTggQEAgY2xhc3MgQ2hhcnRQYW5lQmFzZSBleHRlbmRzIENv
bXBvbmVudEJhc2UgewogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgIH0KIAor
ICAgIF9kaWRDbGlja0Fubm90YXRpb24oYW5ub3RhdGlvbikKKyAgICB7CisgICAgICAgIGlmKGFu
bm90YXRpb24udGFzaykKKyAgICAgICAgICAgIHRoaXMuX29wZW5BbmFseXNpc1Rhc2soYW5ub3Rh
dGlvbik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0g
W2Fubm90YXRpb24uc3RhcnRUaW1lLCBhbm5vdGF0aW9uLmVuZFRpbWVdOworICAgICAgICAgICAg
dGhpcy5fbWFpbkNoYXJ0LnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOworICAgICAgICAgICAg
dGhpcy5fb3ZlcnZpZXdDaGFydC5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCB0aGlzKTsKKyAg
ICAgICAgICAgIHRoaXMuZW5xdWV1ZVRvUmVuZGVyKCk7CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBfb3BlbkFuYWx5c2lzVGFzayhhbm5vdGF0aW9uKQogICAgIHsKICAgICAgICAgdmFyIHJvdXRl
ciA9IHRoaXMucm91dGVyKCk7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQuanMgYi9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUt
dGltZS1zZXJpZXMtY2hhcnQuanMKaW5kZXggY2Y0YWVmMTNmNDgyZDExY2YzOTVhYWRiOWI0OTNi
OTQ3ZmRjOGViMy4uNTA4OGRjMjk5NDE3MTI0NmU3NGFlYTY5OWY3MzlmYmZhZDNmNDBlZSAxMDA2
NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2lu
dGVyYWN0aXZlLXRpbWUtc2VyaWVzLWNoYXJ0LmpzCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1jaGFydC5q
cwpAQCAtMzM4LDEwICszMzgsMTEgQEAgY2xhc3MgSW50ZXJhY3RpdmVUaW1lU2VyaWVzQ2hhcnQg
ZXh0ZW5kcyBUaW1lU2VyaWVzQ2hhcnQgewogCiAgICAgX2ZpbmRBbm5vdGF0aW9uKGN1cnNvckxv
Y2F0aW9uKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9hbm5vdGF0aW9ucykKKyAgICAgICAg
Y29uc3QgYWxsQW5ub3RhdGlvbnMgPSB0aGlzLmFsbEFubm90YXRpb25zKCk7CisgICAgICAgIGlm
ICghYWxsQW5ub3RhdGlvbnMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAg
ICAgICAgZm9yICh2YXIgaXRlbSBvZiB0aGlzLl9hbm5vdGF0aW9ucykgeworICAgICAgICBmb3Ig
KGNvbnN0IGl0ZW0gb2YgYWxsQW5ub3RhdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChpdGVtLngg
PD0gY3Vyc29yTG9jYXRpb24ueCAmJiBjdXJzb3JMb2NhdGlvbi54IDw9IGl0ZW0ueCArIGl0ZW0u
d2lkdGgKICAgICAgICAgICAgICAgICAmJiBpdGVtLnkgPD0gY3Vyc29yTG9jYXRpb24ueSAmJiBj
dXJzb3JMb2NhdGlvbi55IDw9IGl0ZW0ueSArIGl0ZW0uaGVpZ2h0KQogICAgICAgICAgICAgICAg
IHJldHVybiBpdGVtOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL3RpbWUtc2VyaWVzLWNoYXJ0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL3RpbWUtc2VyaWVzLWNoYXJ0LmpzCmluZGV4IDJi
NDJiZmRkMjk4OWMzMjhiYzEzN2JmZDM3YTU3ZjAxY2E0ODg1ZDQuLjI2MmRiNDQxNGU2NDlkYzE2
YzI4MjU3YzAyZDlhMDY2NzI0YjkyZjMgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFydC5qcworKysgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hh
cnQuanMKQEAgLTEyLDYgKzEyLDcgQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMgQ29t
cG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX3JlbmRlcmVkVHJlbmRMaW5lcyA9IGZhbHNlOwog
ICAgICAgICB0aGlzLl92YWx1ZVJhbmdlQ2FjaGUgPSBudWxsOwogICAgICAgICB0aGlzLl9hbm5v
dGF0aW9ucyA9IG51bGw7CisgICAgICAgIHRoaXMuX3N1Z2dlc3RlZEFubm9hdGlvbnMgPSBudWxs
OwogICAgICAgICB0aGlzLl9hbm5vdGF0aW9uUm93cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3N0
YXJ0VGltZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2VuZFRpbWUgPSBudWxsOwpAQCAtMTUwLDYg
KzE1MSwxOCBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsK
ICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICB9CiAKKyAgICBzZXRTdWdnZXN0
ZWRBbm5vdGF0aW9ucyhzdWdnZXN0ZWRBbm5vdGF0aW9ucykKKyAgICB7CisgICAgICAgIHRoaXMu
X3N1Z2dlc3RlZEFubm9hdGlvbnMgPSBzdWdnZXN0ZWRBbm5vdGF0aW9uczsKKyAgICAgICAgdGhp
cy5fYW5ub3RhdGlvblJvd3MgPSBudWxsOworICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigp
OworICAgIH0KKworICAgIGFsbEFubm90YXRpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiAo
dGhpcy5fYW5ub3RhdGlvbnMgfHwgW10pLmNvbmNhdCh0aGlzLl9zdWdnZXN0ZWRBbm5vYXRpb25z
IHx8IFtdKTsKKyAgICB9CisKICAgICByZW5kZXIoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9zdGFydFRpbWUgfHwgIXRoaXMuX2VuZFRpbWUpCkBAIC0yNjQsNyArMjc3LDggQEAgY2xhc3Mg
VGltZVNlcmllc0NoYXJ0IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAKICAgICBfbGF5b3V0QW5u
b3RhdGlvbkJhcnMobWV0cmljcykKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fYW5ub3RhdGlv
bnMgfHwgIXRoaXMuX29wdGlvbnMuYW5ub3RhdGlvbnMpCisgICAgICAgIGNvbnN0IGFsbEFubm90
YXRpb25zID0gdGhpcy5hbGxBbm5vdGF0aW9ucygpOworICAgICAgICBpZiAoIWFsbEFubm90YXRp
b25zLmxlbmd0aCB8fCAhdGhpcy5fb3B0aW9ucy5hbm5vdGF0aW9ucykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgICAgICB2YXIgYmFySGVpZ2h0ID0gdGhpcy5fb3B0aW9ucy5hbm5v
dGF0aW9ucy5iYXJIZWlnaHQ7CkBAIC0yODAsNyArMjk0LDcgQEAgY2xhc3MgVGltZVNlcmllc0No
YXJ0IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHZhciBtaW5XaWR0aCA9IHRoaXMu
X29wdGlvbnMuYW5ub3RhdGlvbnMubWluV2lkdGg7CiAKICAgICAgICAgLy8gKDEpIEV4cGFuZCB0
aGUgd2lkdGggb2YgZWFjaCBiYXIgdG8gaGl0IHRoZSBtaW5pbXVtIHdpZHRoIGFuZCBzb3J0IHRo
ZW0gYnkgbGVmdCBlZGdlcy4KLSAgICAgICAgdGhpcy5fYW5ub3RhdGlvbnMuZm9yRWFjaChmdW5j
dGlvbiAoYW5ub3RhdGlvbikgeworICAgICAgICBhbGxBbm5vdGF0aW9ucy5mb3JFYWNoKGZ1bmN0
aW9uIChhbm5vdGF0aW9uKSB7CiAgICAgICAgICAgICB2YXIgeDEgPSBtZXRyaWNzLnRpbWVUb1go
YW5ub3RhdGlvbi5zdGFydFRpbWUpOwogICAgICAgICAgICAgdmFyIHgyID0gbWV0cmljcy50aW1l
VG9YKGFubm90YXRpb24uZW5kVGltZSk7CiAgICAgICAgICAgICBpZiAoeDIgLSB4MSA8IG1pbldp
ZHRoKSB7CkBAIC0yOTAsNyArMzA0LDcgQEAgY2xhc3MgVGltZVNlcmllc0NoYXJ0IGV4dGVuZHMg
Q29tcG9uZW50QmFzZSB7CiAgICAgICAgICAgICBhbm5vdGF0aW9uLnggPSB4MTsKICAgICAgICAg
ICAgIGFubm90YXRpb24ud2lkdGggPSB4MiAtIHgxOwogICAgICAgICB9KTsKLSAgICAgICAgdmFy
IHNvcnRlZEFubm90YXRpb25zID0gdGhpcy5fYW5ub3RhdGlvbnMuc29ydChmdW5jdGlvbiAoYSwg
YikgeyByZXR1cm4gYS54IC0gYi54IH0pOworICAgICAgICB2YXIgc29ydGVkQW5ub3RhdGlvbnMg
PSBhbGxBbm5vdGF0aW9ucy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnggLSBiLngg
fSk7CiAKICAgICAgICAgLy8gKDIpIEZvciBlYWNoIGJhciwgZmluZCB0aGUgZmlyc3Qgcm93IGlu
IHdoaWNoIHRoZSBsYXN0IGJhcidzIHJpZ2h0IGVkZ2UgYXBwZWFyCiAgICAgICAgIC8vIG9uIHRo
ZSBsZWZ0IG9mIHRoZSBiYXIgYXMgZWFjaCByb3cgY29udGFpbnMgbm9uLW92ZXJsYXBwaW5nIGJh
cnMgaW4gdGhlIGFjZW5kaW5nIHggb3JkZXIuCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMKaW5kZXgg
YTJiZDZjYjQwZmYyYTUyYTg3OGMwOGRhYzE2MDM5Y2ZjMDc0ZjZhNC4uYWM0YjI0NTkwYmNmMWVm
OGMxMzI5OWNhMWYyYjMwZjlhNzUyZGIxOSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50LXNldC5qcwpAQCAt
MjIsNiArMjIsNyBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgfQogCiAgICAgcGxhdGZv
cm1JZCgpIHsgcmV0dXJuIHRoaXMuX3BsYXRmb3JtSWQ7IH0KKyAgICBtZXRyaWNJZCgpIHsgcmV0
dXJuIHRoaXMuX21ldHJpY0lkOyB9CiAKICAgICBzdGF0aWMgZmluZFNldChwbGF0Zm9ybUlkLCBt
ZXRyaWNJZCwgbGFzdE1vZGlmaWVkKQogICAgIHsKQEAgLTIyNSw4ICsyMjYsOCBAQCBjbGFzcyBN
ZWFzdXJlbWVudFNldCB7CiAgICAgICAgICAgICB2YXIgc2VnbWVudGF0aW9uU2VyaWVzID0gW107
CiAgICAgICAgICAgICB2YXIgYWRkU2VnbWVudCA9IGZ1bmN0aW9uIChzdGFydGluZ1BvaW50LCBl
bmRpbmdQb2ludCkgewogICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFN0YXRpc3RpY3MubWVh
bih0aW1lU2VyaWVzLnZhbHVlc0JldHdlZW5SYW5nZShzdGFydGluZ1BvaW50LnNlcmllc0luZGV4
LCBlbmRpbmdQb2ludC5zZXJpZXNJbmRleCkpOwotICAgICAgICAgICAgICAgIHNlZ21lbnRhdGlv
blNlcmllcy5wdXNoKHt2YWx1ZTogdmFsdWUsIHRpbWU6IHN0YXJ0aW5nUG9pbnQudGltZSwgaW50
ZXJ2YWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH19KTsKLSAgICAgICAgICAgICAgICBz
ZWdtZW50YXRpb25TZXJpZXMucHVzaCh7dmFsdWU6IHZhbHVlLCB0aW1lOiBlbmRpbmdQb2ludC50
aW1lLCBpbnRlcnZhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfX0pOworICAgICAgICAg
ICAgICAgIHNlZ21lbnRhdGlvblNlcmllcy5wdXNoKHt2YWx1ZTogdmFsdWUsIHRpbWU6IHN0YXJ0
aW5nUG9pbnQudGltZSwgc2VyaWVzSW5kZXg6IHN0YXJ0aW5nUG9pbnQuc2VyaWVzSW5kZXgsIGlu
dGVydmFsOiBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9fSk7CisgICAgICAgICAgICAgICAg
c2VnbWVudGF0aW9uU2VyaWVzLnB1c2goe3ZhbHVlOiB2YWx1ZSwgdGltZTogZW5kaW5nUG9pbnQu
dGltZSwgc2VyaWVzSW5kZXg6IGVuZGluZ1BvaW50LnNlcmllc0luZGV4LCBpbnRlcnZhbDogZnVu
Y3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfX0pOwogICAgICAgICAgICAgfTsKIAogICAgICAgICAg
ICAgdmFyIHN0YXJ0aW5nSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQu
b3JnL3B1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzCmluZGV4IGU0M2FmMmMzMTFlNzQ3YTFkNDU1
ODcyMTVhYzkyOGYzYzBmODhkZjQuLjNlODY5OTg5OGYzZjYxODAyOTc1M2ZmYWUwNTE5YTY2NDRm
MDUwMmYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9k
ZWxzL21ldHJpYy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21v
ZGVscy9tZXRyaWMuanMKQEAgLTg1LDYgKzg1LDE1IEBAIGNsYXNzIE1ldHJpYyBleHRlbmRzIExh
YmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gdW5pdCAhPSAnZnBzJyAmJiB1bml0ICE9ICcv
cycgJiYgdW5pdCAhPSAncHQnOwogICAgIH0KIAorICAgIHN1bW1hcml6ZUZvclZhbHVlcyhiZWZv
cmVWYWx1ZSwgYWZ0ZXJWYWx1ZSwgYmV0dGVyRGVzY3JpcHRpb24sIHdvcnNlRGVzY3JpcHRpb24p
CisgICAgeworICAgICAgICBjb25zdCBkaWZmID0gYWZ0ZXJWYWx1ZSAtIGJlZm9yZVZhbHVlOwor
ICAgICAgICBjb25zdCBjaGFuZ2VUeXBlID0gZGlmZiA8IDAgPT0gdGhpcy5pc1NtYWxsZXJCZXR0
ZXIoKSA/IGJldHRlckRlc2NyaXB0aW9uIDogd29yc2VEZXNjcmlwdGlvbjsKKyAgICAgICAgY29u
c3QgcmVsYXRpdmVDaGFuZ2UgPSBkaWZmIC8gYmVmb3JlVmFsdWUgKiAxMDA7CisgICAgICAgIGNv
bnN0IGNoYW5nZUxhYmVsID0gTWF0aC5hYnMocmVsYXRpdmVDaGFuZ2UpLnRvRml4ZWQoMikgKyAn
JSAnICsgY2hhbmdlVHlwZTsKKyAgICAgICAgcmV0dXJuIHtjaGFuZ2VUeXBlLCByZWxhdGl2ZUNo
YW5nZSwgY2hhbmdlTGFiZWx9OworICAgIH0KKwogICAgIG1ha2VGb3JtYXR0ZXIoc2lnRmlnLCBh
bHdheXNTaG93U2lnbikgeyByZXR1cm4gTWV0cmljLm1ha2VGb3JtYXR0ZXIodGhpcy51bml0KCks
IHNpZ0ZpZywgYWx3YXlzU2hvd1NpZ24pOyB9CiAKICAgICBzdGF0aWMgbWFrZUZvcm1hdHRlcih1
bml0LCBzaWdGaWcgPSAyLCBhbHdheXNTaG93U2lnbiA9IGZhbHNlKQpkaWZmIC0tZ2l0IGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3QtZ3JvdXAuanMKaW5k
ZXggMGMwZGZhZDQ3N2UzNTdjYjU0NGQxMzI3MDNjYTY3MmI4YTAxYzIyNS4uMTMwZThmOTk1OTli
NDQwODVlZTk4Mzg0ZDlmMDEzYzFmMzNjZDlhNCAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcworKysgYi9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpzCkBAIC0xNDQsMTUg
KzE0NCwxMiBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2JqZWN0IHsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChiZWZvcmVWYWx1ZXMubGVuZ3RoICYmIGFmdGVyVmFsdWVzLmxl
bmd0aCkgewotICAgICAgICAgICAgdmFyIGRpZmYgPSBhZnRlck1lYW4gLSBiZWZvcmVNZWFuOwot
ICAgICAgICAgICAgdmFyIHNtYWxsZXJJc0JldHRlciA9IG1ldHJpYy5pc1NtYWxsZXJCZXR0ZXIo
KTsKLSAgICAgICAgICAgIHZhciBjaGFuZ2VUeXBlID0gZGlmZiA8IDAgPT0gc21hbGxlcklzQmV0
dGVyID8gJ2JldHRlcicgOiAnd29yc2UnOwotICAgICAgICAgICAgdmFyIGNoYW5nZUxhYmVsID0g
TWF0aC5hYnMoZGlmZiAvIGJlZm9yZU1lYW4gKiAxMDApLnRvRml4ZWQoMikgKyAnJSAnICsgY2hh
bmdlVHlwZTsKKyAgICAgICAgICAgIGNvbnN0IHN1bW1hcnkgPSBtZXRyaWMuc3VtbWFyaXplRm9y
VmFsdWVzKGJlZm9yZU1lYW4sIGFmdGVyTWVhbiwgJ2JldHRlcicsICd3b3JzZScpOworICAgICAg
ICAgICAgcmVzdWx0LmNoYW5nZVR5cGUgPSBzdW1tYXJ5LmNoYW5nZVR5cGU7CisgICAgICAgICAg
ICByZXN1bHQuY2hhbmdlTGFiZWwgPSBzdW1tYXJ5LmNoYW5nZUxhYmVsOwogICAgICAgICAgICAg
dmFyIGlzU2lnbmlmaWNhbnQgPSBTdGF0aXN0aWNzLnRlc3RXZWxjaHNUKGJlZm9yZVZhbHVlcywg
YWZ0ZXJWYWx1ZXMpOwogICAgICAgICAgICAgdmFyIHNpZ25pZmljYW5jZUxhYmVsID0gaXNTaWdu
aWZpY2FudCA/ICdzaWduaWZpY2FudCcgOiAnaW5zaWduaWZpY2FudCc7CiAKLSAgICAgICAgICAg
IHJlc3VsdC5jaGFuZ2VUeXBlID0gY2hhbmdlVHlwZTsKLSAgICAgICAgICAgIHJlc3VsdC5sYWJl
bCA9IGNoYW5nZUxhYmVsOwogICAgICAgICAgICAgaWYgKGhhc0NvbXBsZXRlZCkKICAgICAgICAg
ICAgICAgICByZXN1bHQuc3RhdHVzID0gaXNTaWduaWZpY2FudCA/IHJlc3VsdC5jaGFuZ2VUeXBl
IDogJ3VuY2hhbmdlZCc7CiAgICAgICAgICAgICByZXN1bHQuZnVsbExhYmVsID0gYCR7cmVzdWx0
LmxhYmVsfSAoc3RhdGlzdGljYWxseSAke3NpZ25pZmljYW5jZUxhYmVsfSlgOwpkaWZmIC0tZ2l0
IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpz
IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpz
CmluZGV4IGM3OTE0ODY2NTFkMjc2ZDliMDIzMTdiZjJiM2IxNjFkYWVlOWEwYWYuLmM2NDBlNzE4
ZTZmM2ZiMzJjYTNkNzFiMjFmZWJhOGJjNmQ2NWI3NDkgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcworKysgYi9XZWJzaXRl
cy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKQEAgLTM5LDYg
KzM5LDQ0IEBAIGNvbnN0IENoYXJ0VHJlbmRMaW5lVHlwZXMgPSBbCiAgICAgICAgIF0KICAgICB9
LAogICAgIHsKKyAgICAgICAgaWQ6IDYsCisgICAgICAgIGxhYmVsOiAnU2VnbWVudGF0aW9uIHdp
dGggdC10ZXN0IGFuYWx5c2lzJywKKyAgICAgICAgZXhlY3V0ZTogYXN5bmMgZnVuY3Rpb24gKHNv
dXJjZSwgcGFyYW1ldGVycykgeworICAgICAgICAgICAgY29uc3Qgc2VnbWVudGF0aW9uID0gIGF3
YWl0IHNvdXJjZS5tZWFzdXJlbWVudFNldC5mZXRjaFNlZ21lbnRhdGlvbignc2VnbWVudFRpbWVT
ZXJpZXNCeU1heGltaXppbmdTY2h3YXJ6Q3JpdGVyaW9uJywgcGFyYW1ldGVycywKKyAgICAgICAg
ICAgICAgICBzb3VyY2UudHlwZSwgc291cmNlLmluY2x1ZGVPdXRsaWVycywgc291cmNlLmV4dGVu
ZFRvRnV0dXJlKTsKKyAgICAgICAgICAgIGlmICghc2VnbWVudGF0aW9uKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzZWdtZW50YXRpb247CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHZhbHVlRm9y
SW5kZXhJblNlZ21lbnRhdGlvbihpbmRleCkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgc2VnbWVudGF0aW9uLmxlbmd0aCAtIDE7IGkrKyl7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChzZWdtZW50YXRpb25baV0uc2VyaWVzSW5kZXggPCBpbmRleCAmJiBzZWdtZW50YXRp
b25baSArIDFdLnNlcmllc0luZGV4ID4gaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICYm
IHNlZ21lbnRhdGlvbltpXS52YWx1ZSA9PSBzZWdtZW50YXRpb25baSArIDFdLnZhbHVlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnRhdGlvbltpXS52YWx1ZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBtZXRyaWMgPSBN
ZXRyaWMuZmluZEJ5SWQoc291cmNlLm1lYXN1cmVtZW50U2V0Lm1ldHJpY0lkKCkpOworICAgICAg
ICAgICAgY29uc3QgdGltZVNlcmllcyA9IHNvdXJjZS5tZWFzdXJlbWVudFNldC5mZXRjaGVkVGlt
ZVNlcmllcyhzb3VyY2UudHlwZSwgc291cmNlLmluY2x1ZGVPdXRsaWVycywgc291cmNlLmV4dGVu
ZFRvRnV0dXJlKTsKKyAgICAgICAgICAgIHNlZ21lbnRhdGlvbi5hbmFseXNpc0Fubm90YXRpb25z
ID0gU3RhdGlzdGljcy50VGVzdEZvclJhbmdlV2l0aFNpZ25pZmljYW5jZSh0aW1lU2VyaWVzLnZh
bHVlcygpLCBzZWdtZW50YXRpb24sIHBhcmFtZXRlcnNbcGFyYW1ldGVycy5sZW5ndGggLSAxXSku
bWFwKChyYW5nZSkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSB0aW1l
U2VyaWVzLmZpbmRQb2ludEJ5SW5kZXgocmFuZ2Uuc3RhcnRJbmRleCk7CisgICAgICAgICAgICAg
ICAgY29uc3QgZW5kUG9pbnQgPSB0aW1lU2VyaWVzLmZpbmRQb2ludEJ5SW5kZXgocmFuZ2UuZW5k
SW5kZXgpOworICAgICAgICAgICAgICAgIGNvbnN0IHN1bW1hcnkgPSBtZXRyaWMuc3VtbWFyaXpl
Rm9yVmFsdWVzKHJhbmdlLnNlZ21lbnRhdGlvblN0YXJ0VmFsdWUsIHJhbmdlLnNlZ21lbnRhdGlv
bkVuZFZhbHVlLCAncHJvZ3Jlc3Npb24nLCAncmVncmVzc2lvbicpOworICAgICAgICAgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgIHRhc2s6IG51bGwsCisgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0VGltZTogc3RhcnRQb2ludC50aW1lLAorICAgICAgICAgICAgICAgICAgICBl
bmRUaW1lOiBlbmRQb2ludC50aW1lLAorICAgICAgICAgICAgICAgICAgICBsYWJlbDogYFBvdGVu
dGlhbCAke3N1bW1hcnkuY2hhbmdlTGFiZWx9YCwKKyAgICAgICAgICAgICAgICAgICAgZmlsbFN0
eWxlOiAnIzgwODA4MCcsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgcmV0dXJuIHNlZ21lbnRhdGlvbjsKKyAgICAgICAgfSwKKyAgICAgICAgcGFyYW1l
dGVyTGlzdDogWworICAgICAgICAgICAge2xhYmVsOiAiU2VnbWVudCBjb3VudCB3ZWlnaHQiLCB2
YWx1ZTogMi41LCBtaW46IDAuMDEsIG1heDogMTAsIHN0ZXA6IDAuMDF9LAorICAgICAgICAgICAg
e2xhYmVsOiAiR3JpZCBzaXplIiwgdmFsdWU6IDUwMCwgbWluOiAxMDAsIG1heDogMTAwMDAsIHN0
ZXA6IDEwfSwKKyAgICAgICAgICAgIHtsYWJlbDogInQtdGVzdCBzaWduaWZpY2FuY2UiLCB2YWx1
ZTogMC45OSwgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IFN0YXRpc3RpY3Muc3VwcG9ydGVkT25l
U2lkZVRUZXN0UHJvYmFiaWxpdGllcygpfSwKKyAgICAgICAgXQorICAgIH0sCisgICAgewogICAg
ICAgICBpZDogMSwKICAgICAgICAgbGFiZWw6ICdTaW1wbGUgTW92aW5nIEF2ZXJhZ2UnLAogICAg
ICAgICBwYXJhbWV0ZXJMaXN0OiBbCkBAIC00MTcsMTEgKzQ1NSwyMSBAQCBjbGFzcyBDaGFydFBh
bmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFj
ZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcudHJlbmQtbGluZS1wYXJhbWV0ZXItbGlz
dCcpLCBbCiAgICAgICAgICAgICAgICAgZWxlbWVudCgnaDMnLCAnUGFyYW1ldGVycycpLAogICAg
ICAgICAgICAgICAgIGVsZW1lbnQoJ3VsJywgdGhpcy5fdHJlbmRMaW5lVHlwZS5wYXJhbWV0ZXJM
aXN0Lm1hcChmdW5jdGlvbiAocGFyYW1ldGVyLCBpbmRleCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAocGFyYW1ldGVyLnR5cGUgPT0gJ3NlbGVjdCcpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHNlbGVjdCA9IGVsZW1lbnQoJ3NlbGVjdCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcGFyYW1ldGVyLm9wdGlvbnMubWFwKChvcHRpb24pID0+IGVsZW1lbnQoJ29wdGlv
bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogb3B0aW9uLCBzZWxl
Y3RlZDogb3B0aW9uID09IHBhcmFtZXRlci52YWx1ZX0sIG9wdGlvbikpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdC5vbmNoYW5nZSA9IHNlbGYuX3RyZW5kTGluZVBhcmFtZXRlckRp
ZENoYW5nZS5iaW5kKHNlbGYpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnBhcmFt
ZXRlckluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dCgnbGknLCBlbGVtZW50KCdsYWJlbCcsIFtwYXJhbWV0ZXIubGFiZWwgKyAnOiAnLCBzZWxlY3Rd
KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICB2YXIgYXR0
cmlidXRlcyA9IHt0eXBlOiAnbnVtYmVyJ307CiAgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IG5hbWUgaW4gcGFyYW1ldGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1tu
YW1lXSA9IHBhcmFtZXRlcltuYW1lXTsKKwogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVz
LnZhbHVlID0gY29uZmlndXJlZFBhcmFtZXRlcnNbaW5kZXhdOwotICAgICAgICAgICAgICAgICAg
ICB2YXIgaW5wdXQgPSBlbGVtZW50KCdpbnB1dCcsIGF0dHJpYnV0ZXMpOworICAgICAgICAgICAg
ICAgICAgICBjb25zdCBpbnB1dCA9IGVsZW1lbnQoJ2lucHV0JywgYXR0cmlidXRlcyk7CiAgICAg
ICAgICAgICAgICAgICAgIGlucHV0LnBhcmFtZXRlckluZGV4ID0gaW5kZXg7CiAgICAgICAgICAg
ICAgICAgICAgIGlucHV0Lm9uaW5wdXQgPSBzZWxmLl90cmVuZExpbmVQYXJhbWV0ZXJEaWRDaGFu
Z2UuYmluZChzZWxmKTsKICAgICAgICAgICAgICAgICAgICAgaW5wdXQub25jaGFuZ2UgPSBzZWxm
Ll90cmVuZExpbmVQYXJhbWV0ZXJEaWRDaGFuZ2UuYmluZChzZWxmKTsKQEAgLTQ3NSw3ICs1MjMs
NyBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAgdGhp
cy5fdXBkYXRlVHJlbmRMaW5lKCk7CiAgICAgfQogCi0gICAgX3VwZGF0ZVRyZW5kTGluZSgpCisg
ICAgYXN5bmMgX3VwZGF0ZVRyZW5kTGluZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX21h
aW5DaGFydC5zb3VyY2VMaXN0KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00ODQsNyArNTMy
LDYgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgIHZh
ciBjdXJyZW50VHJlbmRMaW5lVHlwZSA9IHRoaXMuX3RyZW5kTGluZVR5cGUgfHwgQ2hhcnRUcmVu
ZExpbmVUeXBlcy5EZWZhdWx0VHlwZTsKICAgICAgICAgdmFyIGN1cnJlbnRUcmVuZExpbmVQYXJh
bWV0ZXJzID0gdGhpcy5fdHJlbmRMaW5lUGFyYW1ldGVycyB8fCB0aGlzLl9kZWZhdWx0UGFyYW1l
dGVyc0ZvclRyZW5kTGluZShjdXJyZW50VHJlbmRMaW5lVHlwZSk7CiAgICAgICAgIHZhciBjdXJy
ZW50VHJlbmRMaW5lVmVyc2lvbiA9IHRoaXMuX3RyZW5kTGluZVZlcnNpb247Ci0gICAgICAgIHZh
ciBzZWxmID0gdGhpczsKICAgICAgICAgdmFyIHNvdXJjZUxpc3QgPSB0aGlzLl9tYWluQ2hhcnQu
c291cmNlTGlzdCgpOwogCiAgICAgICAgIGlmICghY3VycmVudFRyZW5kTGluZVR5cGUuZXhlY3V0
ZSkgewpAQCAtNDkyLDE0ICs1MzksMTYgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQ
YW5lQmFzZSB7CiAgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gV2FpdCBmb3IgYWxsIHRyZW5kbGluZXMgdG8gYmUgcmVh
ZHkuIE90aGVyd2lzZSB3ZSBtaWdodCBzZWUgRk9DIHdoZW4gdGhlIGRvbWFpbiBpcyBleHBhbmRl
ZC4KLSAgICAgICAgICAgIFByb21pc2UuYWxsKHNvdXJjZUxpc3QubWFwKGZ1bmN0aW9uIChzb3Vy
Y2UsIHNvdXJjZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRUcmVuZExp
bmVUeXBlLmV4ZWN1dGUuY2FsbChudWxsLCBzb3VyY2UsIGN1cnJlbnRUcmVuZExpbmVQYXJhbWV0
ZXJzKS50aGVuKGZ1bmN0aW9uICh0cmVuZGxpbmVTZXJpZXMpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHNlbGYuX3RyZW5kTGluZVZlcnNpb24gPT0gY3VycmVudFRyZW5kTGluZVZlcnNpb24p
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYWluQ2hhcnQuc2V0VHJlbmRMaW5lKHNv
dXJjZUluZGV4LCB0cmVuZGxpbmVTZXJpZXMpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgfSkpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHNlbGYuZW5xdWV1
ZVRvUmVuZGVyKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGF3YWl0IFByb21pc2Uu
YWxsKHNvdXJjZUxpc3QubWFwKGFzeW5jIChzb3VyY2UsIHNvdXJjZUluZGV4KSA9PiB7CisgICAg
ICAgICAgICAgICAgY29uc3QgdHJlbmRsaW5lU2VyaWVzID0gYXdhaXQgY3VycmVudFRyZW5kTGlu
ZVR5cGUuZXhlY3V0ZS5jYWxsKG51bGwsIHNvdXJjZSwgY3VycmVudFRyZW5kTGluZVBhcmFtZXRl
cnMpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLl90cmVuZExpbmVWZXJzaW9uID09IGN1cnJl
bnRUcmVuZExpbmVWZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYWluQ2hhcnQu
c2V0VHJlbmRMaW5lKHNvdXJjZUluZGV4LCB0cmVuZGxpbmVTZXJpZXMpOworICAgICAgICAgICAg
ICAgIGlmICh0cmVuZGxpbmVTZXJpZXMgJiYgdHJlbmRsaW5lU2VyaWVzLmFuYWx5c2lzQW5ub3Rh
dGlvbnMpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21haW5DaGFydC5zZXRTdWdnZXN0ZWRB
bm5vdGF0aW9ucyh0cmVuZGxpbmVTZXJpZXMuYW5hbHlzaXNBbm5vdGF0aW9ucyk7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9tYWluQ2hhcnQuc2V0U3Vn
Z2VzdGVkQW5ub3RhdGlvbnMobnVsbCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICB0
aGlzLmVucXVldWVUb1JlbmRlcigpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvc3RhdGlzdGljcy10ZXN0cy5qcwpp
bmRleCBkNTY0NDcxYjI5MGU0NTJlYTlkZmY1YTdiNWFlM2Q2Mjc1ZGMyZDU5Li5iYTk5ZTIwNGRk
NThlMGEwMGY2NzRjYjE5MjMwYjFiOWJkNjQ4M2JhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3N0YXRpc3RpY3MtdGVzdHMuanMKQEAgLTM4OCw0
ICszODgsOTYgQEAgZGVzY3JpYmUoJ1N0YXRpc3RpY3MnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3Muc2VnbWVudFRpbWVTZXJpZXNCeU1heGlt
aXppbmdTY2h3YXJ6Q3JpdGVyaW9uKHZhbHVlcyksIFsgMCwgNiwgMTYsIDI2LCAzNyBdKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBkZXNjcmliZSgndFRlc3RGb3JSYW5nZVdpdGhTaWdu
aWZpY2FuY2UnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGFy
cmF5IGlmIHRoZSB2YWx1ZSBpcyBlbXB0eSBsaXN0JywgKCkgPT4geworICAgICAgICAgICAgYXNz
ZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNzLnRUZXN0Rm9yUmFuZ2VXaXRoU2lnbmlmaWNhbmNlKFtd
LCBbXSwgMC45NzUpLCBbXSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdzaG91bGQgcmV0
dXJuIGFuIGVtcHR5IGFycmF5IGlmIHNlZ21lbnRhdGlvbiBpcyBlbXB0eSBsaXN0JywgKCkgPT4g
eworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNzLnRUZXN0Rm9yUmFuZ2VX
aXRoU2lnbmlmaWNhbmNlKFsxLDIsM10sIFtdLCAwLjk3NSksIFtdKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHJhbmdlIGlmIGNvbXB1dGVXZWxjaHNUIHNo
b3dzIGEgc2lnbmlmaWNhbnQgY2hhbmdlJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdmFs
dWVzID0gWworICAgICAgICAgICAgICAgIDc0Ny4zMDMzNzQyMzc0NCwKKyAgICAgICAgICAgICAg
ICA3MzEuNDczOTI1ODUyNzYsCisgICAgICAgICAgICAgICAgNzQzLjY2NzYzNTEzMTYxLAorICAg
ICAgICAgICAgICAgIDczOC4wMjA1NTMyMzQ4NywKKyAgICAgICAgICAgICAgICA3MzguMjU0MjYz
NDA4NDIsCisgICAgICAgICAgICAgICAgNzQyLjM4NjgwMDQ2NDcxLAorICAgICAgICAgICAgICAg
IDczMy4xMzkyMTcwMzI4NCwKKyAgICAgICAgICAgICAgICA3MzkuMjIwNjk5NjYxNDcsCisgICAg
ICAgICAgICAgICAgNzM1LjY5Mjk1NzQ5NjMzLAorICAgICAgICAgICAgICAgIDc0My4wMTcwNTQ3
MjUwNCwKKyAgICAgICAgICAgICAgICA3NDUuNDU3NzgxNDUzMDYsCisgICAgICAgICAgICAgICAg
NzMxLjA0ODQxMTU3MTY5LAorICAgICAgICAgICAgICAgIDcyOS40MzcyNjc0OTczLAorICAgICAg
ICAgICAgICAgIDczNS40NDk3NDE2NTI3LAorICAgICAgICAgICAgICAgIDczOS4wMjMwNjY4NjQ0
LAorICAgICAgICAgICAgICAgIDczMC45MTc4Mjk4OTkwOSwKKyAgICAgICAgICAgICAgICA3MjIu
MTg3MjU0MTEyNzksCisgICAgICAgICAgICAgICAgNzMxLjk2MjIzNDUxNzI4LAorICAgICAgICAg
ICAgICAgIDczMC4wNDExOTIxNjE5MiwKKyAgICAgICAgICAgICAgICA3MzAuNzgwODc2NDYyODQs
CisgICAgICAgICAgICAgICAgNzI5LjYzMTU1MjEwMzY1LAorICAgICAgICAgICAgICAgIDczMC4x
NzU4NTIwMDg3OCwKKyAgICAgICAgICAgICAgICA3MzMuOTM3NjYwNTQ3MDYsCisgICAgICAgICAg
ICAgICAgNzQwLjc0OTIwNzE3MTk3LAorICAgICAgICAgICAgICAgIDc1Mi4xNDcxODAyMzY0NywK
KyAgICAgICAgICAgICAgICA3NjQuNDk5OTAxNjQ4NDcsCisgICAgICAgICAgICAgICAgNzY2LjM2
MTAwODI4NDczLAorICAgICAgICAgICAgICAgIDc1Ni4yMjkxODgzMjUyLAorICAgICAgICAgICAg
ICAgIDc1MC4xNDUyMjQ1MTA5NywKKyAgICAgICAgICAgICAgICA3NDkuNTc1OTUwOTIyNjYsCisg
ICAgICAgICAgICAgICAgNzQ4LjAzNjI0ODgxODY2LAorICAgICAgICAgICAgICAgIDc2OS40MTUy
MjE3NjM4NiwKKyAgICAgICAgICAgICAgICA3NDQuMDQ2NjA0MzA0NTYsCisgICAgICAgICAgICAg
ICAgNzUxLjE3OTI3ODA4MjY1LAorICAgICAgICAgICAgICAgIDc1My4yOTk5Njg1NDA2MiwKKyAg
ICAgICAgICAgICAgICA3NTcuMDE4MTM3NTY5MzYsCisgICAgICAgICAgICAgICAgNzQ2LjYyNDEz
ODIwNzQxLAorICAgICAgICAgICAgICAgIDc0Mi42NDQyMDA2MjczNiwKKyAgICAgICAgICAgICAg
ICA3NTguMTI3MjYzNTI3NzIsCisgICAgICAgICAgICAgICAgNzc4LjIyNzg0MzkwODksCisgICAg
ICAgICAgICAgICAgNzc1LjExODE4NTU0NTQxLAorICAgICAgICAgICAgICAgIDc3NS4xMTgxODU1
NDU0MV07CisgICAgICAgICAgICBjb25zdCBzZWdtZW50YXRpb24gPSBbeworICAgICAgICAgICAg
ICAgICAgICBzZXJpZXNJbmRleDogMCwKKyAgICAgICAgICAgICAgICAgICAgdGltZTogMTUwNTE3
NjAzMDY3MSwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDczNi41MzY2NzA0ODk2NTU1LAor
ICAgICAgICAgICAgICAgICAgICB4OiAzNzAuNDU3MTc4OTQwNDU2NiwKKyAgICAgICAgICAgICAg
ICAgICAgeTogMTg1LjUyNjEzMzM0NTIwMjQ4LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogMTgsCisgICAgICAg
ICAgICAgICAgICAgIHRpbWU6IDE1MTUwNzQzOTE1MzQsCisgICAgICAgICAgICAgICAgICAgIHZh
bHVlOiA3MzYuNTM2NjcwNDg5NjU1NSwKKyAgICAgICAgICAgICAgICAgICAgeDogOTE5LjQxODM4
NTI3MTQ5NDcsCisgICAgICAgICAgICAgICAgICAgIHk6IDE4NS41MjYxMzMzNDUyMDI0OAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
ZXJpZXNJbmRleDogMTgsCisgICAgICAgICAgICAgICAgICAgIHRpbWU6IDE1MTUwNzQzOTE1MzQs
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiA3NTAuMzQ4MzQyODM4MzE0MiwKKyAgICAgICAg
ICAgICAgICAgICAgeDogOTE5LjQxODM4NTI3MTQ5NDcsCisgICAgICAgICAgICAgICAgICAgIHk6
IDE3Ny45NzEwOTUzNDA5NjczLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogNDEsCisgICAgICAgICAgICAgICAg
ICAgIHRpbWU6IDE1NTM4NTE2OTU4NjksCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiA3NTAu
MzQ4MzQyODM4MzE0MiwKKyAgICAgICAgICAgICAgICAgICAgeDogMzA3MC4wMDAyOTA3NjQ0NDYs
CisgICAgICAgICAgICAgICAgICAgIHk6IDE3Ny45NzEwOTUzNDA5NjczLAorICAgICAgICAgICAg
ICAgIH1dOworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNzLnRUZXN0Rm9y
UmFuZ2VXaXRoU2lnbmlmaWNhbmNlKHZhbHVlcywgc2VnbWVudGF0aW9uLCAwLjk3NSksIFsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAiZW5kSW5kZXgiOiAyOSwKKyAgICAg
ICAgICAgICAgICAgICJzZWdtZW50YXRpb25FbmRWYWx1ZSI6IDc1MC4zNDgzNDI4MzgzMTQyLAor
ICAgICAgICAgICAgICAgICAgInNlZ21lbnRhdGlvblN0YXJ0VmFsdWUiOiA3MzYuNTM2NjcwNDg5
NjU1NSwKKyAgICAgICAgICAgICAgICAgICJzdGFydEluZGV4IjogNgorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIF0pOworICAgICAgICB9KQorICAgIH0pOwogfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336999</attachid>
            <date>2018-04-02 10:53:06 -0700</date>
            <delta_ts>2018-04-04 20:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184131-20180402105305.patch</filename>
            <type>text/plain</type>
            <size>30883</size>
            <attacher>dewei_zhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwMDc1CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBlMTAzMTlkYzM1MmU2Nzg2OTE1MmEwYTUxZDQ0ODkxN2Y5ZDJmZTExLi4zNGE4YTFkMWZj
YjhkNTIxYjdiNGYxZTkwY2JlNGEyODVlYzBlNmNhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxOC0wMy0yOSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBVSSB0byBzaG93IHBvdGVudGlhbCByZWdyZXNz
aW9ucyBpbiBjaGFydCB3aXRoIHQtdGVzdGluZyBhZ2FpbnN0IHNlZ21lbnRhdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxMzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBVSSBpbiB0
aGUgY2hhcnQtcGFuZSBzbyB0aGF0IHVzZXIgY2FuIHVzZSBuZXcgb3B0aW9uIGluIHRyZW5kbGlu
ZSB3aGljaCBub3Qgb25seQorICAgICAgICBzaG93cyB0aGUgc2VnbWVudGF0aW9uLCBidXQgYWxz
byB0LXRlc3QgYWdhaW5zdCBwb3RlbnRpYWwgY2hhbmdlcyBpbmRpY2F0ZWQgYnkgc2VnbWVudGF0
aW9uLgorCisgICAgICAgIEZpeCBhIGJ1ZyBpbiBBbmFseXNpc1Rhc2tQYWdlIHRoYXQgY2hhcnQg
aXMgbm90IHVwZGF0ZWQgd2hlbiBjaGFuZ2UgdHlwZSBvZiB0YXNrIGNoYW5nZXMuCisKKyAgICAg
ICAgKiBicm93c2VyLXRlc3RzL2ludGVyYWN0aXZlLXRpbWUtc2VyaWVzLWNoYXJ0LXRlc3RzLmpz
OiBGaXggYSB1bml0IHRlc3RzLgorICAgICAgICAqIGJyb3dzZXItdGVzdHMvdGltZS1zZXJpZXMt
Y2hhcnQtdGVzdHMuanM6IEZpeCBhIHVuaXQgdGVzdHMuCisgICAgICAgICogcHVibGljL3NoYXJl
ZC9zdGF0aXN0aWNzLmpzOiBBZGRlZCBhIGZ1bmN0aW9uIHRvIHQtdGVzdCBjZXJ0YWluIHJhbmdl
IGJhc2VkIG9uIHNlZ21lbnRhdGlvbiByZXN1bHRzLgorICAgICAgICAoU3RhdGlzdGljcy5uZXcu
dGhpcy5zdXBwb3J0ZWRPbmVTaWRlVFRlc3RQcm9iYWJpbGl0aWVzKToKKyAgICAgICAgKFN0YXRp
c3RpY3MubmV3LnRoaXMuZmluZFJhbmdlc0ZvckNoYW5nZURldGVjdGlvbnNXaXRoV2VsY2hzVFRl
c3QpOgorICAgICAgICAqIHB1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qczog
V2lsbCBzZWxlY3QgdGhlIHJhbmdlIGlmIHVzZXIgY2xpY2tzIG9uIGEgc3VnZ2VzdGVkIGFubm90
YXRpb24uCisgICAgICAgIChDaGFydFBhbmVCYXNlLnByb3RvdHlwZS5jb25maWd1cmUpOgorICAg
ICAgICAoQ2hhcnRQYW5lQmFzZS5wcm90b3R5cGUuX2RpZENsaWNrQW5ub3RhdGlvbik6CisgICAg
ICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtc3R5bGVzLmpzOgorICAgICAgICAoQ2hh
cnRTdHlsZXMubWFpbkNoYXJ0T3B0aW9ucyk6IEFkZGVkICdmaWxsU3R5bGVGb3JUYXNrJyB0byBk
ZXRlcm1pbmUgdGhlIGZpbGxTdHlsZSBmb3IgYW5ub3RhdGlvbiBiYXNlZCBvbiBjaGFuZ2UgdHlw
ZSBvZiBhIGFuYWx5c2lzIHRhc2suCisgICAgICAgICogcHVibGljL3YzL2NvbXBvbmVudHMvaW50
ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQuanM6CisgICAgICAgIChJbnRlcmFjdGl2ZVRpbWVT
ZXJpZXNDaGFydC5wcm90b3R5cGUuX2ZpbmRBbm5vdGF0aW9uKTogQWxzbyBuZWVkIHRvIHNlYXJj
aCBhbW9uZyBzdWdnZXN0ZWQgYW5ub3RhaW9ucy4KKyAgICAgICAgKiBwdWJsaWMvdjMvY29tcG9u
ZW50cy90aW1lLXNlcmllcy1jaGFydC5qczogSW50cm9kdWNlZCAnc3VnZ2VzdGVkIGFubm90YWlv
bicgd2hpY2ggZG9lcyBub3QgaGF2ZSBhbiBleGlzdGluZyB0YXNrIGFuZCBpcyBzdWdnZXN0ZWQg
YnkgdC10ZXN0IGJhc2VkIG9uIHNlZ21lbnRhdGlvbi4KKyAgICAgICAgKFRpbWVTZXJpZXNDaGFy
dCk6CisgICAgICAgIChUaW1lU2VyaWVzQ2hhcnQucHJvdG90eXBlLnNldFN1Z2dlc3RlZEFubm90
YXRpb25zKToKKyAgICAgICAgKFRpbWVTZXJpZXNDaGFydC5wcm90b3R5cGUuYWxsQW5ub3RhdGlv
bnMpOiBSZXR1cm5zIGJvdGggYW5ub3RhdGlvbnMgd2l0aCBhbmQgd2l0aG91dCBhbmFseXNpcyB0
YXNrLgorICAgICAgICAoVGltZVNlcmllc0NoYXJ0LnByb3RvdHlwZS5fbGF5b3V0QW5ub3RhdGlv
bkJhcnMpOiBTaG91bGQgdGFrZSBhbGwgYW5ub3RhdGlvbnMgaW4gdGhlIGNhbGN1bGF0aW9uLgor
ICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzOgorICAgICAgICAo
TWVhc3VyZW1lbnRTZXQucHJvdG90eXBlLm1ldHJpY0lkKTogUmV0dXJucyBtZXRyaWMgaWQuCisg
ICAgICAgICogcHVibGljL3YzL21vZGVscy9tZXRyaWMuanM6CisgICAgICAgIChNZXRyaWMucHJv
dG90eXBlLnN1bW1hcml6ZUZvclZhbHVlcyk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbiB0byBzdW1t
YXJpemUgYSBnaXZlbiB2YWx1ZQorICAgICAgICAqIHB1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91
cC5qczoKKyAgICAgICAgKFRlc3RHcm91cC5wcm90b3R5cGUuY29tcGFyZVRlc3RSZXN1bHRzKTog
QWRhcHRlZCB0byB1c2UgJ01ldHJpYy5zdW1tYXJpemVGb3JWYWx1ZXMnLgorICAgICAgICAqIHB1
YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzOiBBZGRlZCAnU2VnbWVudGF0aW9uIHdpdGggdC10
ZXN0IGFuYWx5c2lzJyB0byAnQ2hhcnRUcmVuZExpbmVUeXBlcycuCisgICAgICAgIChDaGFydFBh
bmUucHJvdG90eXBlLl9yZW5kZXJUcmVuZExpbmVQb3BvdmVyKToKKyAgICAgICAgKENoYXJ0UGFu
ZS5wcm90b3R5cGUuYXN5bmMuX3VwZGF0ZVRyZW5kTGluZSk6IG1ha2UgaXQgYW4gYXN5bmMgZnVu
Y3Rpb24uCisgICAgICAgICogdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzOiBBZGRlZCB1
bml0IHRlc3RzIGZvciAndFRlc3RGb3JSYW5nZVdpdGhTaWduaWZpY2FuY2UnLgorCiAyMDE4LTAz
LTE5ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRh
dGUgUGVyZiBidWlsZGJvdCBzeW5jaW5nIHNjcmlwdHMgZm9yIEJ1aWxkYm90IDAuOQpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVzdHMvaW50ZXJhY3RpdmUt
dGltZS1zZXJpZXMtY2hhcnQtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJv
d3Nlci10ZXN0cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcwppbmRleCAz
ODU2ZDIxYTg5NWNjYjQ3YTEwNjBiN2Q0NTUzMTNiMWE2YmE2OTFhLi4xOTY4MjRiMDIxMTk2ODA4
MGU5ZDA0Y2Q4ZWZjNTZmYTkyM2ExMWVmIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvYnJvd3Nlci10ZXN0cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1jaGFydC10ZXN0cy5q
cworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy9pbnRlcmFjdGl2
ZS10aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcwpAQCAtNDk0LDcgKzQ5NCw3IEBAIGRlc2NyaWJl
KCdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAgY29uc3QgY29u
dGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKICAgICAgICAgcmV0dXJuIENoYXJ0VGVzdC5p
bXBvcnRDaGFydFNjcmlwdHMoY29udGV4dCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBjb25z
dCBjaGFydCA9IENoYXJ0VGVzdC5jcmVhdGVJbnRlcmFjdGl2ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0
ZXIoY29udGV4dCwgbnVsbCwKLSAgICAgICAgICAgICAgICB7YW5ub3RhdGlvbnM6IHsgdGV4dFN0
eWxlOiAnIzAwMCcsIHRleHRCYWNrZ3JvdW5kOiAnI2ZmZicsIG1pbldpZHRoOiAzLCBiYXJIZWln
aHQ6IDEwLCBiYXJTcGFjaW5nOiAxfX0pOworICAgICAgICAgICAgICAgIHthbm5vdGF0aW9uczog
eyB0ZXh0U3R5bGU6ICcjMDAwJywgdGV4dEJhY2tncm91bmQ6ICcjZmZmJywgbWluV2lkdGg6IDMs
IGJhckhlaWdodDogMTAsIGJhclNwYWNpbmc6IDEsIGZpbGxTdHlsZUZvclRhc2s6ICgpID0+ICcj
Y2NjJ319KTsKIAogICAgICAgICAgICAgY2hhcnQuc2V0RG9tYWluKENoYXJ0VGVzdC5zYW1wbGVD
bHVzdGVyLnN0YXJ0VGltZSwgQ2hhcnRUZXN0LnNhbXBsZUNsdXN0ZXIuZW5kVGltZSk7CiAgICAg
ICAgICAgICBjaGFydC5mZXRjaE1lYXN1cmVtZW50U2V0cygpOwpAQCAtNTA1LDggKzUwNSw3IEBA
IGRlc2NyaWJlKCdJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFydCcsICgpID0+IHsKICAgICAgICAg
ICAgICAgICBzdGFydFRpbWU6IENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSArIGRp
ZmYgLyAyLAogICAgICAgICAgICAgICAgIGVuZFRpbWU6IENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVy
LmVuZFRpbWUgLSBkaWZmIC8gNCwKICAgICAgICAgICAgICAgICBsYWJlbDogJ2hlbGxvLCB3b3Js
ZCcsCi0gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAncmdiKDAsIDAsIDI1NSknLAotICAgICAg
ICAgICAgfV0KKyAgICAgICAgICAgIH1dOwogICAgICAgICAgICAgY2hhcnQuc2V0QW5ub3RhdGlv
bnMoYW5ub3RhdGlvbnMpOwogCiAgICAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uQ2xpY2tDYWxs
cyA9IFtdOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL2Jyb3dzZXItdGVz
dHMvdGltZS1zZXJpZXMtY2hhcnQtdGVzdHMuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
YnJvd3Nlci10ZXN0cy90aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcwppbmRleCBkZWVmMWMxZTll
MjY1MDA3YzkyYWIwZjE3NjFjMTU2ZDZmMjFiYzFmLi41ZmQwYTUxNDhjZTE2YTc0YmMwZWY3YWVm
MjhmOTUzYzE3YjQ0NTNhIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvYnJv
d3Nlci10ZXN0cy90aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcworKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvYnJvd3Nlci10ZXN0cy90aW1lLXNlcmllcy1jaGFydC10ZXN0cy5qcwpAQCAt
ODAwLDcgKzgwMCw3IEBAIGRlc2NyaWJlKCdUaW1lU2VyaWVzQ2hhcnQnLCAoKSA9PiB7CiAgICAg
ICAgIGl0KCdzaG91bGQgcmVuZGVyIGFubm90YXRpb25zJywgKCkgPT4gewogICAgICAgICAgICAg
Y29uc3QgY29udGV4dCA9IG5ldyBCcm93c2luZ0NvbnRleHQoKTsKICAgICAgICAgICAgIHJldHVy
biBDaGFydFRlc3QuaW1wb3J0Q2hhcnRTY3JpcHRzKGNvbnRleHQpLnRoZW4oKCkgPT4gewotICAg
ICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7YW5ub3RhdGlvbnM6IHsgdGV4dFN0eWxlOiAn
IzAwMCcsIHRleHRCYWNrZ3JvdW5kOiAnI2ZmZicsIG1pbldpZHRoOiAzLCBiYXJIZWlnaHQ6IDcs
IGJhclNwYWNpbmc6IDJ9fTsKKyAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0ge2Fubm90
YXRpb25zOiB7IHRleHRTdHlsZTogJyMwMDAnLCB0ZXh0QmFja2dyb3VuZDogJyNmZmYnLCBtaW5X
aWR0aDogMywgYmFySGVpZ2h0OiA3LCBiYXJTcGFjaW5nOiAyLCBmaWxsU3R5bGVGb3JUYXNrOiAo
KSA9PiAnI2NjYyd9fTsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFydFdpdGhvdXRBbm5vdGF0
aW9ucyA9IENoYXJ0VGVzdC5jcmVhdGVDaGFydFdpdGhTYW1wbGVDbHVzdGVyKGNvbnRleHQsIG51
bGwsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJ0V2l0aEFubm90YXRpb25z
ID0gQ2hhcnRUZXN0LmNyZWF0ZUNoYXJ0V2l0aFNhbXBsZUNsdXN0ZXIoY29udGV4dCwgbnVsbCwg
b3B0aW9ucyk7CiAKQEAgLTgxOCw3ICs4MTgsNiBAQCBkZXNjcmliZSgnVGltZVNlcmllc0NoYXJ0
JywgKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiBDaGFydFRlc3Qu
c2FtcGxlQ2x1c3Rlci5zdGFydFRpbWUgKyBkaWZmIC8gNCwKICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuZFRpbWU6IENoYXJ0VGVzdC5zYW1wbGVDbHVzdGVyLnN0YXJ0VGltZSArIGRpZmYgLyAy
LAogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdoZWxsbywgd29ybGQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAncmdiKDAsIDAsIDI1NSknLAogICAgICAgICAg
ICAgICAgICAgICB9XSk7CiAKICAgICAgICAgICAgICAgICAgICAgY2FudmFzV2l0aEFubm90YXRp
b25zID0gY2hhcnRXaXRoQW5ub3RhdGlvbnMuY29udGVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2NhbnZh
cycpOwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQv
c3RhdGlzdGljcy5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvc2hhcmVkL3N0
YXRpc3RpY3MuanMKaW5kZXggYzIzMWExZWM0NmFjMDhjNDhkYjMyM2I5OTZjMmI4YjA0NzgwMzA2
NC4uYTMxNjRjZjZhOTRlZTNjNTcxN2ZlMWQxMzAyZjFjOGQwM2RjZWYzMiAxMDA2NDQKLS0tIGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9zaGFyZWQvc3RhdGlzdGljcy5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9zdGF0aXN0aWNzLmpzCkBA
IC0zOSw2ICszOSwxMCBAQCB2YXIgU3RhdGlzdGljcyA9IG5ldyAoZnVuY3Rpb24gKCkgewogICAg
ICAgICByZXR1cm4gc3VwcG9ydGVkUHJvYmFiaWxpdGllcwogICAgIH0KIAorICAgIHRoaXMuc3Vw
cG9ydGVkT25lU2lkZVRUZXN0UHJvYmFiaWxpdGllcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
cmV0dXJuIE9iamVjdC5rZXlzKHREaXN0cmlidXRpb25CeU9uZVNpZGVkUHJvYmFiaWxpdHkpOwor
ICAgIH0KKwogICAgIC8vIENvbXB1dGVzIHRoZSBkZWx0YSBkIHMudC4gKG1lYW4gLSBkLCBtZWFu
ICsgZCkgaXMgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgd2l0aCB0aGUgc3BlY2lmaWVkIHByb2Jh
YmlsaXR5IGluIE8oMSkuCiAgICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSA9IGZ1bmN0
aW9uIChwcm9iYWJpbGl0eSwgbnVtYmVyT2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgewogICAg
ICAgICB2YXIgb25lU2lkZWRQcm9iYWJpbGl0eSA9IHR3b1NpZGVkVG9PbmVTaWRlZFByb2JhYmls
aXR5KHByb2JhYmlsaXR5KTsKQEAgLTEwNiw2ICsxMTAsNDIgQEAgdmFyIFN0YXRpc3RpY3MgPSBu
ZXcgKGZ1bmN0aW9uICgpIHsKICAgICAgICAgfTsKICAgICB9CiAKKyAgICB0aGlzLmZpbmRSYW5n
ZXNGb3JDaGFuZ2VEZXRlY3Rpb25zV2l0aFdlbGNoc1RUZXN0ID0gZnVuY3Rpb24gKHZhbHVlcywg
c2VnbWVudGF0aW9ucywgb25lU2lkZWRQb3NzaWJpbGl0eSkgeworICAgICAgICBpZiAoIXZhbHVl
cy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgY29uc3Qgc2VsZWN0
ZWRSYW5nZXMgPSBbXTsKKyAgICAgICAgY29uc3QgdHdvU2lkZWRGcm9tT25lU2lkZWRQb3NzaWJp
bGl0eSA9IDIgKiBvbmVTaWRlZFBvc3NpYmlsaXR5IC0gMTsKKworICAgICAgICBmb3IgKGxldCBp
ID0gMTsgaSArIDIgPCBzZWdtZW50YXRpb25zLmxlbmd0aDsgaSArPSAyKSB7CisgICAgICAgICAg
ICBsZXQgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzTWVhbiA9IHNl
Z21lbnRhdGlvbnNbaV0udmFsdWU7CisgICAgICAgICAgICBjb25zdCBjdXJyZW50TWVhbiA9IHNl
Z21lbnRhdGlvbnNbaSArIDFdLnZhbHVlOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoY3Vy
cmVudE1lYW4gIT0gcHJldmlvdXNNZWFuKTsKKyAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRDaGFu
Z2VQb2ludCA9IHNlZ21lbnRhdGlvbnNbaV0uc2VyaWVzSW5kZXg7CisgICAgICAgICAgICBjb25z
dCBzdGFydCA9IHNlZ21lbnRhdGlvbnNbaSAtIDFdLnNlcmllc0luZGV4OworICAgICAgICAgICAg
Y29uc3QgZW5kID0gc2VnbWVudGF0aW9uc1tpICsgMl0uc2VyaWVzSW5kZXg7CisKKyAgICAgICAg
ICAgIGZvciAobGV0IGxlZnRFZGdlID0gY3VycmVudENoYW5nZVBvaW50IC0gMiwgcmlnaHRFZGdl
ID0gY3VycmVudENoYW5nZVBvaW50ICsgMjsgbGVmdEVkZ2UgPj0gc3RhcnQgJiYgcmlnaHRFZGdl
IDw9IGVuZDsgbGVmdEVkZ2UtLSwgcmlnaHRFZGdlKyspIHsKKyAgICAgICAgICAgICAgICBjb25z
dCByZXN1bHQgPSB0aGlzLmNvbXB1dGVXZWxjaHNUKHZhbHVlcywgbGVmdEVkZ2UsIGN1cnJlbnRD
aGFuZ2VQb2ludCAtIGxlZnRFZGdlLCB2YWx1ZXMsIGN1cnJlbnRDaGFuZ2VQb2ludCwgcmlnaHRF
ZGdlIC0gY3VycmVudENoYW5nZVBvaW50LCB0d29TaWRlZEZyb21PbmVTaWRlZFBvc3NpYmlsaXR5
KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnNpZ25pZmljYW50bHlEaWZmZXJlbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZXMucHVzaCh7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGFydEluZGV4OiBsZWZ0RWRnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVuZEluZGV4OiByaWdodEVkZ2UgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVu
dGF0aW9uU3RhcnRWYWx1ZTogcHJldmlvdXNNZWFuLAorICAgICAgICAgICAgICAgICAgICAgICAg
c2VnbWVudGF0aW9uRW5kVmFsdWU6IGN1cnJlbnRNZWFuCisgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghZm91bmQgJiYgU3RhdGlzdGljcy5kZWJ1Z2dpbmdUZXN0aW5nUmFuZ2VOb21pbmF0aW9uKQor
ICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gZmluZCBhIHRlc3RpbmcgcmFu
Z2UgYXQnLCBjdXJyZW50Q2hhbmdlUG9pbnQsICdjaGFuZ2luZyBmcm9tJywgcHJldmlvdXNNZWFu
LCAndG8nLCBjdXJyZW50TWVhbik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc2VsZWN0
ZWRSYW5nZXM7CisgICAgfTsKKwogICAgIGZ1bmN0aW9uIHNhbXBsZU1lYW5BbmRWYXJpYW5jZUZv
clZhbHVlcyh2YWx1ZXMsIHN0YXJ0SW5kZXgsIGxlbmd0aCkgewogICAgICAgICB2YXIgc3VtID0g
MDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKZGlmZiAtLWdpdCBh
L1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1wYW5l
LWJhc2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMv
Y2hhcnQtcGFuZS1iYXNlLmpzCmluZGV4IDE2Y2UyMDdmNzc0YTI5NzdiOTdlODg0NjEwMmU5MzVk
YTY2N2UzY2UuLmJmZDdjMDk5Y2M1NGQ5MGRkMzUwYWZmMmU4OWNmMzc5ZmM2MjEzZGQgMTAwNjQ0
Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFy
dC1wYW5lLWJhc2UuanMKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9j
b21wb25lbnRzL2NoYXJ0LXBhbmUtYmFzZS5qcwpAQCAtMTksNyArMTksOSBAQCBjbGFzcyBDaGFy
dFBhbmVCYXNlIGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7CiAgICAgICAgIHRoaXMuX21haW5DaGFy
dFN0YXR1cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbW1pdExvZ1ZpZXdlciA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX3Rhc2tzRm9yQW5ub3RhdGlvbnMgPSBudWxsOworICAgICAgICB0aGlzLl9k
ZXRlY3RlZEFubm90YXRpb25zID0gbnVsbDsKICAgICAgICAgdGhpcy5fcmVuZGVyZWRBbm5vdGF0
aW9ucyA9IGZhbHNlOworICAgICAgICB0aGlzLl9yZW5kZXJBbm5vdGF0aW9uc0xhemlseSA9IG5l
dyBMYXppbHlFdmFsdWF0ZWRGdW5jdGlvbih0aGlzLl9yZW5kZXJBbm5vdGF0aW9ucy5iaW5kKHRo
aXMpKTsKICAgICB9CiAKICAgICBjb25maWd1cmUocGxhdGZvcm1JZCwgbWV0cmljSWQpCkBAIC01
MSw3ICs1Myw3IEBAIGNsYXNzIENoYXJ0UGFuZUJhc2UgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHsK
ICAgICAgICAgdGhpcy5fbWFpbkNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdpbmRpY2F0b3JDaGFuZ2Un
LCB0aGlzLl9pbmRpY2F0b3JEaWRDaGFuZ2UuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX21h
aW5DaGFydC5saXN0ZW5Ub0FjdGlvbignc2VsZWN0aW9uQ2hhbmdlJywgdGhpcy5fbWFpblNlbGVj
dGlvbkRpZENoYW5nZS5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fbWFpbkNoYXJ0Lmxpc3Rl
blRvQWN0aW9uKCd6b29tJywgdGhpcy5fbWFpblNlbGVjdGlvbkRpZFpvb20uYmluZCh0aGlzKSk7
Ci0gICAgICAgIHRoaXMuX21haW5DaGFydC5saXN0ZW5Ub0FjdGlvbignYW5ub3RhdGlvbkNsaWNr
JywgdGhpcy5fb3BlbkFuYWx5c2lzVGFzay5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fbWFp
bkNoYXJ0Lmxpc3RlblRvQWN0aW9uKCdhbm5vdGF0aW9uQ2xpY2snLCB0aGlzLl9kaWRDbGlja0Fu
bm90YXRpb24uYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNv
bnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcuY2hhcnQtcGFuZS1tYWluJyksIHRoaXMuX21haW5DaGFy
dCk7CiAKICAgICAgICAgdGhpcy5fcmV2aXNpb25SYW5nZSA9IG5ldyBDaGFydFJldmlzaW9uUmFu
Z2UodGhpcy5fbWFpbkNoYXJ0KTsKQEAgLTE3MSw2ICsxNzMsMTggQEAgY2xhc3MgQ2hhcnRQYW5l
QmFzZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRl
cigpOwogICAgIH0KIAorICAgIF9kaWRDbGlja0Fubm90YXRpb24oYW5ub3RhdGlvbikKKyAgICB7
CisgICAgICAgIGlmIChhbm5vdGF0aW9uLnRhc2spCisgICAgICAgICAgICB0aGlzLl9vcGVuQW5h
bHlzaXNUYXNrKGFubm90YXRpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0
IG5ld1NlbGVjdGlvbiA9IFthbm5vdGF0aW9uLnN0YXJ0VGltZSwgYW5ub3RhdGlvbi5lbmRUaW1l
XTsKKyAgICAgICAgICAgIHRoaXMuX21haW5DaGFydC5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9u
KTsKKyAgICAgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2hhcnQuc2V0U2VsZWN0aW9uKG5ld1NlbGVj
dGlvbiwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLmVucXVldWVUb1JlbmRlcigpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgX29wZW5BbmFseXNpc1Rhc2soYW5ub3RhdGlvbikKICAgICB7CiAg
ICAgICAgIHZhciByb3V0ZXIgPSB0aGlzLnJvdXRlcigpOwpAQCAtMjQ2LDE1ICsyNjAsMTYgQEAg
Y2xhc3MgQ2hhcnRQYW5lQmFzZSBleHRlbmRzIENvbXBvbmVudEJhc2UgewogICAgICAgICBpZiAo
dGhpcy5fb3ZlcnZpZXdDaGFydCkKICAgICAgICAgICAgIHRoaXMuX292ZXJ2aWV3Q2hhcnQuZW5x
dWV1ZVRvUmVuZGVyKCk7CiAKLSAgICAgICAgaWYgKHRoaXMuX21haW5DaGFydCkKKyAgICAgICAg
aWYgKHRoaXMuX21haW5DaGFydCkgewogICAgICAgICAgICAgdGhpcy5fbWFpbkNoYXJ0LmVucXVl
dWVUb1JlbmRlcigpOworICAgICAgICAgICAgdGhpcy5fcmVuZGVyQW5ub3RhdGlvbnNMYXppbHku
ZXZhbHVhdGUodGhpcy5fdGFza3NGb3JBbm5vdGF0aW9ucywgdGhpcy5fZGV0ZWN0ZWRBbm5vdGF0
aW9ucywgdGhpcy5fcmVuZGVyZWRBbm5vdGF0aW9ucyk7CisgICAgICAgIH0KIAogICAgICAgICBp
ZiAodGhpcy5fZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICB0aGlzLnJlbmRlclJlcGxhY2Uo
dGhpcy5jb250ZW50KCkucXVlcnlTZWxlY3RvcignLmNoYXJ0LXBhbmUtbWFpbicpLCB0aGlzLl9l
cnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
dGhpcy5fcmVuZGVyQW5ub3RhdGlvbnMoKTsKIAogICAgICAgICBpZiAodGhpcy5fbWFpbkNoYXJ0
U3RhdHVzKQogICAgICAgICAgICAgdGhpcy5fbWFpbkNoYXJ0U3RhdHVzLmVucXVldWVUb1JlbmRl
cigpOwpAQCAtMjY4LDM3ICsyODMsMjEgQEAgY2xhc3MgQ2hhcnRQYW5lQmFzZSBleHRlbmRzIENv
bXBvbmVudEJhc2UgewogICAgICAgICBJbnN0cnVtZW50YXRpb24uZW5kTWVhc3VyaW5nVGltZSgn
Q2hhcnRQYW5lJywgJ3JlbmRlcicpOwogICAgIH0KIAotICAgIF9yZW5kZXJBbm5vdGF0aW9ucygp
CisgICAgX3JlbmRlckFubm90YXRpb25zKHRhc2tGb3JBbm5vdGF0aW9ucywgZGV0ZWN0ZWRBbm5v
dGF0aW9ucywgcmVuZGVyZWRBbm5vdGF0aW9ucykKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5f
dGFza3NGb3JBbm5vdGF0aW9ucyB8fCB0aGlzLl9yZW5kZXJlZEFubm90YXRpb25zKQotICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9yZW5kZXJlZEFubm90YXRpb25zID0gdHJ1ZTsK
IAotICAgICAgICB2YXIgYW5ub3RhdGlvbnMgPSB0aGlzLl90YXNrc0ZvckFubm90YXRpb25zLm1h
cChmdW5jdGlvbiAodGFzaykgewotICAgICAgICAgICAgdmFyIGZpbGxTdHlsZSA9ICcjZmM2JzsK
LSAgICAgICAgICAgIHN3aXRjaCAodGFzay5jaGFuZ2VUeXBlKCkpIHsKLSAgICAgICAgICAgIGNh
c2UgJ2luY29uY2x1c2l2ZSc6Ci0gICAgICAgICAgICAgICAgZmlsbFN0eWxlID0gJyNmY2MnOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncHJvZ3Jlc3Npb24nOgot
ICAgICAgICAgICAgICAgIGZpbGxTdHlsZSA9ICcjMzlmJzsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgJ3JlZ3Jlc3Npb24nOgotICAgICAgICAgICAgICAgIGZpbGxT
dHlsZSA9ICcjYzYwJzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
J3VuY2hhbmdlZCc6Ci0gICAgICAgICAgICAgICAgZmlsbFN0eWxlID0gJyNjY2MnOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCisgICAgICAgIGxldCBhbm5vdGF0aW9u
cyA9ICh0YXNrRm9yQW5ub3RhdGlvbnMgfHwgW10pLm1hcCgodGFzaykgPT4gewogICAgICAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0YXNrOiB0YXNrLAorICAgICAgICAgICAgICAg
IHRhc2ssCiAgICAgICAgICAgICAgICAgc3RhcnRUaW1lOiB0YXNrLnN0YXJ0VGltZSgpLAogICAg
ICAgICAgICAgICAgIGVuZFRpbWU6IHRhc2suZW5kVGltZSgpLAotICAgICAgICAgICAgICAgIGxh
YmVsOiB0YXNrLmxhYmVsKCksCi0gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiBmaWxsU3R5bGUs
CisgICAgICAgICAgICAgICAgbGFiZWw6IHRhc2subGFiZWwoKQogICAgICAgICAgICAgfTsKICAg
ICAgICAgfSk7CisKKyAgICAgICAgYW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9ucy5jb25jYXQoZGV0
ZWN0ZWRBbm5vdGF0aW9ucyB8fCBbXSk7CisKICAgICAgICAgdGhpcy5fbWFpbkNoYXJ0LnNldEFu
bm90YXRpb25zKGFubm90YXRpb25zKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1zdHlsZXMuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvY2hhcnQtc3R5bGVzLmpz
CmluZGV4IGNkMTMwNzgwZTU3ZjVlOTYzNjUyODk5ZmJiOTE2NmMyZDk0YmYzYmYuLmUyNjc3OWZl
Yzk0OGI4ZjRiNjRiYmQ4YzM0MGIwNDQ1YjZiYzkxNGYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9jaGFydC1zdHlsZXMuanMKKysrIGIv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2NoYXJ0LXN0eWxl
cy5qcwpAQCAtMTUzLDYgKzE1MywyMiBAQCBjbGFzcyBDaGFydFN0eWxlcyB7CiAgICAgICAgICAg
ICBtaW5XaWR0aDogMywKICAgICAgICAgICAgIGJhckhlaWdodDogNywKICAgICAgICAgICAgIGJh
clNwYWNpbmc6IDIsCisgICAgICAgICAgICBmaWxsU3R5bGVGb3JUYXNrOiAodGFzaykgPT4gewor
ICAgICAgICAgICAgICAgIGlmICghdGFzaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcj
ODg4JzsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAodGFzay5jaGFuZ2VUeXBlKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAnaW5jb25jbHVzaXZlJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAnI2ZjYyc7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Byb2dyZXNz
aW9uJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnIzM5Zic7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgJ3JlZ3Jlc3Npb24nOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICcjYzYwJzsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAndW5jaGFuZ2VkJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAnI2NjYyc7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJldHVybiAnI2ZjNic7CisgICAgICAgICAgICB9CiAgICAgICAgIH07CiAg
ICAgICAgIHJldHVybiBvcHRpb25zOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9pbnRlcmFjdGl2ZS10aW1lLXNlcmllcy1j
aGFydC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvY29tcG9uZW50cy9p
bnRlcmFjdGl2ZS10aW1lLXNlcmllcy1jaGFydC5qcwppbmRleCBjZjRhZWYxM2Y0ODJkMTFjZjM5
NWFhZGI5YjQ5M2I5NDdmZGM4ZWIzLi5lYmE1MjQ0MTM3YTYyNDcxMzk4OWU4MGYwNTE5ZTJhZDg5
MjBiNzVlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2Nv
bXBvbmVudHMvaW50ZXJhY3RpdmUtdGltZS1zZXJpZXMtY2hhcnQuanMKKysrIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25lbnRzL2ludGVyYWN0aXZlLXRpbWUtc2Vy
aWVzLWNoYXJ0LmpzCkBAIC0zNDEsNyArMzQxLDcgQEAgY2xhc3MgSW50ZXJhY3RpdmVUaW1lU2Vy
aWVzQ2hhcnQgZXh0ZW5kcyBUaW1lU2VyaWVzQ2hhcnQgewogICAgICAgICBpZiAoIXRoaXMuX2Fu
bm90YXRpb25zKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgZm9yICh2YXIg
aXRlbSBvZiB0aGlzLl9hbm5vdGF0aW9ucykgeworICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Yg
dGhpcy5fYW5ub3RhdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChpdGVtLnggPD0gY3Vyc29yTG9j
YXRpb24ueCAmJiBjdXJzb3JMb2NhdGlvbi54IDw9IGl0ZW0ueCArIGl0ZW0ud2lkdGgKICAgICAg
ICAgICAgICAgICAmJiBpdGVtLnkgPD0gY3Vyc29yTG9jYXRpb24ueSAmJiBjdXJzb3JMb2NhdGlv
bi55IDw9IGl0ZW0ueSArIGl0ZW0uaGVpZ2h0KQogICAgICAgICAgICAgICAgIHJldHVybiBpdGVt
OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9jb21wb25l
bnRzL3RpbWUtc2VyaWVzLWNoYXJ0LmpzIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1Ymxp
Yy92My9jb21wb25lbnRzL3RpbWUtc2VyaWVzLWNoYXJ0LmpzCmluZGV4IDJiNDJiZmRkMjk4OWMz
MjhiYzEzN2JmZDM3YTU3ZjAxY2E0ODg1ZDQuLjFjNmIwNTg1NDMwYWQ1YmQ2NzM2ZWQ2ZDY0NmJm
ZjU4NzU2ZTNkN2QgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
djMvY29tcG9uZW50cy90aW1lLXNlcmllcy1jaGFydC5qcworKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvcHVibGljL3YzL2NvbXBvbmVudHMvdGltZS1zZXJpZXMtY2hhcnQuanMKQEAgLTQw
NSw3ICs0MDUsNyBAQCBjbGFzcyBUaW1lU2VyaWVzQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRCYXNl
IHsKICAgICAgICAgICAgIGZvciAodmFyIGJhciBvZiByb3cpIHsKICAgICAgICAgICAgICAgICBp
ZiAoYmFyLnggPiB0aGlzLmNoYXJ0V2lkdGggfHwgYmFyLnggKyBiYXIud2lkdGggPCAwKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxT
dHlsZSA9IGJhci5maWxsU3R5bGU7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsU3R5bGUg
PSB0aGlzLl9vcHRpb25zLmFubm90YXRpb25zLmZpbGxTdHlsZUZvclRhc2soYmFyLnRhc2spOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFyLngsIGJhci55LCBiYXIud2lkdGgs
IGJhci5oZWlnaHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1zZXQuanMg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy9tZWFzdXJlbWVudC1z
ZXQuanMKaW5kZXggYTJiZDZjYjQwZmYyYTUyYTg3OGMwOGRhYzE2MDM5Y2ZjMDc0ZjZhNC4uYWM0
YjI0NTkwYmNmMWVmOGMxMzI5OWNhMWYyYjMwZjlhNzUyZGIxOSAxMDA2NDQKLS0tIGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWVhc3VyZW1lbnQtc2V0LmpzCisr
KyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL21lYXN1cmVtZW50
LXNldC5qcwpAQCAtMjIsNiArMjIsNyBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgfQog
CiAgICAgcGxhdGZvcm1JZCgpIHsgcmV0dXJuIHRoaXMuX3BsYXRmb3JtSWQ7IH0KKyAgICBtZXRy
aWNJZCgpIHsgcmV0dXJuIHRoaXMuX21ldHJpY0lkOyB9CiAKICAgICBzdGF0aWMgZmluZFNldChw
bGF0Zm9ybUlkLCBtZXRyaWNJZCwgbGFzdE1vZGlmaWVkKQogICAgIHsKQEAgLTIyNSw4ICsyMjYs
OCBAQCBjbGFzcyBNZWFzdXJlbWVudFNldCB7CiAgICAgICAgICAgICB2YXIgc2VnbWVudGF0aW9u
U2VyaWVzID0gW107CiAgICAgICAgICAgICB2YXIgYWRkU2VnbWVudCA9IGZ1bmN0aW9uIChzdGFy
dGluZ1BvaW50LCBlbmRpbmdQb2ludCkgewogICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFN0
YXRpc3RpY3MubWVhbih0aW1lU2VyaWVzLnZhbHVlc0JldHdlZW5SYW5nZShzdGFydGluZ1BvaW50
LnNlcmllc0luZGV4LCBlbmRpbmdQb2ludC5zZXJpZXNJbmRleCkpOwotICAgICAgICAgICAgICAg
IHNlZ21lbnRhdGlvblNlcmllcy5wdXNoKHt2YWx1ZTogdmFsdWUsIHRpbWU6IHN0YXJ0aW5nUG9p
bnQudGltZSwgaW50ZXJ2YWw6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG51bGw7IH19KTsKLSAgICAg
ICAgICAgICAgICBzZWdtZW50YXRpb25TZXJpZXMucHVzaCh7dmFsdWU6IHZhbHVlLCB0aW1lOiBl
bmRpbmdQb2ludC50aW1lLCBpbnRlcnZhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfX0p
OworICAgICAgICAgICAgICAgIHNlZ21lbnRhdGlvblNlcmllcy5wdXNoKHt2YWx1ZTogdmFsdWUs
IHRpbWU6IHN0YXJ0aW5nUG9pbnQudGltZSwgc2VyaWVzSW5kZXg6IHN0YXJ0aW5nUG9pbnQuc2Vy
aWVzSW5kZXgsIGludGVydmFsOiBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9fSk7CisgICAg
ICAgICAgICAgICAgc2VnbWVudGF0aW9uU2VyaWVzLnB1c2goe3ZhbHVlOiB2YWx1ZSwgdGltZTog
ZW5kaW5nUG9pbnQudGltZSwgc2VyaWVzSW5kZXg6IGVuZGluZ1BvaW50LnNlcmllc0luZGV4LCBp
bnRlcnZhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfX0pOwogICAgICAgICAgICAgfTsK
IAogICAgICAgICAgICAgdmFyIHN0YXJ0aW5nSW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvV2Vic2l0
ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzIGIvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvbWV0cmljLmpzCmluZGV4IGU0M2FmMmMz
MTFlNzQ3YTFkNDU1ODcyMTVhYzkyOGYzYzBmODhkZjQuLjNlODY5OTg5OGYzZjYxODAyOTc1M2Zm
YWUwNTE5YTY2NDRmMDUwMmYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9w
dWJsaWMvdjMvbW9kZWxzL21ldHJpYy5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
cHVibGljL3YzL21vZGVscy9tZXRyaWMuanMKQEAgLTg1LDYgKzg1LDE1IEBAIGNsYXNzIE1ldHJp
YyBleHRlbmRzIExhYmVsZWRPYmplY3QgewogICAgICAgICByZXR1cm4gdW5pdCAhPSAnZnBzJyAm
JiB1bml0ICE9ICcvcycgJiYgdW5pdCAhPSAncHQnOwogICAgIH0KIAorICAgIHN1bW1hcml6ZUZv
clZhbHVlcyhiZWZvcmVWYWx1ZSwgYWZ0ZXJWYWx1ZSwgYmV0dGVyRGVzY3JpcHRpb24sIHdvcnNl
RGVzY3JpcHRpb24pCisgICAgeworICAgICAgICBjb25zdCBkaWZmID0gYWZ0ZXJWYWx1ZSAtIGJl
Zm9yZVZhbHVlOworICAgICAgICBjb25zdCBjaGFuZ2VUeXBlID0gZGlmZiA8IDAgPT0gdGhpcy5p
c1NtYWxsZXJCZXR0ZXIoKSA/IGJldHRlckRlc2NyaXB0aW9uIDogd29yc2VEZXNjcmlwdGlvbjsK
KyAgICAgICAgY29uc3QgcmVsYXRpdmVDaGFuZ2UgPSBkaWZmIC8gYmVmb3JlVmFsdWUgKiAxMDA7
CisgICAgICAgIGNvbnN0IGNoYW5nZUxhYmVsID0gTWF0aC5hYnMocmVsYXRpdmVDaGFuZ2UpLnRv
Rml4ZWQoMikgKyAnJSAnICsgY2hhbmdlVHlwZTsKKyAgICAgICAgcmV0dXJuIHtjaGFuZ2VUeXBl
LCByZWxhdGl2ZUNoYW5nZSwgY2hhbmdlTGFiZWx9OworICAgIH0KKwogICAgIG1ha2VGb3JtYXR0
ZXIoc2lnRmlnLCBhbHdheXNTaG93U2lnbikgeyByZXR1cm4gTWV0cmljLm1ha2VGb3JtYXR0ZXIo
dGhpcy51bml0KCksIHNpZ0ZpZywgYWx3YXlzU2hvd1NpZ24pOyB9CiAKICAgICBzdGF0aWMgbWFr
ZUZvcm1hdHRlcih1bml0LCBzaWdGaWcgPSAyLCBhbHdheXNTaG93U2lnbiA9IGZhbHNlKQpkaWZm
IC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1n
cm91cC5qcyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvbW9kZWxzL3Rlc3Qt
Z3JvdXAuanMKaW5kZXggMGMwZGZhZDQ3N2UzNTdjYjU0NGQxMzI3MDNjYTY3MmI4YTAxYzIyNS4u
MTMwZThmOTk1OTliNDQwODVlZTk4Mzg0ZDlmMDEzYzFmMzNjZDlhNCAxMDA2NDQKLS0tIGEvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9tb2RlbHMvdGVzdC1ncm91cC5qcworKysg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL21vZGVscy90ZXN0LWdyb3VwLmpz
CkBAIC0xNDQsMTUgKzE0NCwxMiBAQCBjbGFzcyBUZXN0R3JvdXAgZXh0ZW5kcyBMYWJlbGVkT2Jq
ZWN0IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChiZWZvcmVWYWx1ZXMubGVuZ3RoICYmIGFm
dGVyVmFsdWVzLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIGRpZmYgPSBhZnRlck1lYW4gLSBi
ZWZvcmVNZWFuOwotICAgICAgICAgICAgdmFyIHNtYWxsZXJJc0JldHRlciA9IG1ldHJpYy5pc1Nt
YWxsZXJCZXR0ZXIoKTsKLSAgICAgICAgICAgIHZhciBjaGFuZ2VUeXBlID0gZGlmZiA8IDAgPT0g
c21hbGxlcklzQmV0dGVyID8gJ2JldHRlcicgOiAnd29yc2UnOwotICAgICAgICAgICAgdmFyIGNo
YW5nZUxhYmVsID0gTWF0aC5hYnMoZGlmZiAvIGJlZm9yZU1lYW4gKiAxMDApLnRvRml4ZWQoMikg
KyAnJSAnICsgY2hhbmdlVHlwZTsKKyAgICAgICAgICAgIGNvbnN0IHN1bW1hcnkgPSBtZXRyaWMu
c3VtbWFyaXplRm9yVmFsdWVzKGJlZm9yZU1lYW4sIGFmdGVyTWVhbiwgJ2JldHRlcicsICd3b3Jz
ZScpOworICAgICAgICAgICAgcmVzdWx0LmNoYW5nZVR5cGUgPSBzdW1tYXJ5LmNoYW5nZVR5cGU7
CisgICAgICAgICAgICByZXN1bHQuY2hhbmdlTGFiZWwgPSBzdW1tYXJ5LmNoYW5nZUxhYmVsOwog
ICAgICAgICAgICAgdmFyIGlzU2lnbmlmaWNhbnQgPSBTdGF0aXN0aWNzLnRlc3RXZWxjaHNUKGJl
Zm9yZVZhbHVlcywgYWZ0ZXJWYWx1ZXMpOwogICAgICAgICAgICAgdmFyIHNpZ25pZmljYW5jZUxh
YmVsID0gaXNTaWduaWZpY2FudCA/ICdzaWduaWZpY2FudCcgOiAnaW5zaWduaWZpY2FudCc7CiAK
LSAgICAgICAgICAgIHJlc3VsdC5jaGFuZ2VUeXBlID0gY2hhbmdlVHlwZTsKLSAgICAgICAgICAg
IHJlc3VsdC5sYWJlbCA9IGNoYW5nZUxhYmVsOwogICAgICAgICAgICAgaWYgKGhhc0NvbXBsZXRl
ZCkKICAgICAgICAgICAgICAgICByZXN1bHQuc3RhdHVzID0gaXNTaWduaWZpY2FudCA/IHJlc3Vs
dC5jaGFuZ2VUeXBlIDogJ3VuY2hhbmdlZCc7CiAgICAgICAgICAgICByZXN1bHQuZnVsbExhYmVs
ID0gYCR7cmVzdWx0LmxhYmVsfSAoc3RhdGlzdGljYWxseSAke3NpZ25pZmljYW5jZUxhYmVsfSlg
OwpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wYWdlcy9h
bmFseXNpcy10YXNrLXBhZ2UuanMgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3Yz
L3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwppbmRleCAwYTZhMDJlZmE2N2I0ZjEwMTMxZWEy
MDlmN2IyYTVkZmNkZWU1NGVmLi42MzM3MTI3NWZhMGRkZDcyYzNhODAyMTgwZWFiMmZiM2NmZjM1
M2Y1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2Vz
L2FuYWx5c2lzLXRhc2stcGFnZS5qcworKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL3BhZ2VzL2FuYWx5c2lzLXRhc2stcGFnZS5qcwpAQCAtNzUxLDcgKzc1MSw3IEBAIGNs
YXNzIEFuYWx5c2lzVGFza1BhZ2UgZXh0ZW5kcyBQYWdlV2l0aEhlYWRpbmcgewogICAgICAgICAg
ICAgbmV3Q2hhbmdlVHlwZSA9IG51bGw7CiAKICAgICAgICAgY29uc3QgdXBkYXRlUmVuZGVyaW5n
ID0gKCkgPT4gewotICAgICAgICAgICAgdGhpcy5fY2hhcnRQYW5lLmRpZFVwZGF0ZUFubm90YXRp
b25zKCk7CisgICAgICAgICAgICB0aGlzLnBhcnQoJ2NoYXJ0LXBhbmUnKS5kaWRVcGRhdGVBbm5v
dGF0aW9ucygpOwogICAgICAgICAgICAgdGhpcy5lbnF1ZXVlVG9SZW5kZXIoKTsKICAgICAgICAg
fTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2sudXBkYXRlQ2hhbmdlVHlwZShuZXdDaGFuZ2VU
eXBlKS50aGVuKHVwZGF0ZVJlbmRlcmluZywgKGVycm9yKSA9PiB7CmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMgYi9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3BhZ2VzL2NoYXJ0LXBhbmUuanMKaW5kZXgg
Yzc5MTQ4NjY1MWQyNzZkOWIwMjMxN2JmMmIzYjE2MWRhZWU5YTBhZi4uYmViOTY2OTYyOTZhYjkw
ZDhmZjBmNTJkNzMxMmRmZGFmYTEyN2VmYSAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy92My9wYWdlcy9jaGFydC1wYW5lLmpzCisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9wdWJsaWMvdjMvcGFnZXMvY2hhcnQtcGFuZS5qcwpAQCAtMzksNiArMzksMzYg
QEAgY29uc3QgQ2hhcnRUcmVuZExpbmVUeXBlcyA9IFsKICAgICAgICAgXQogICAgIH0sCiAgICAg
eworICAgICAgICBpZDogNiwKKyAgICAgICAgbGFiZWw6ICdTZWdtZW50YXRpb24gd2l0aCB0LXRl
c3QgYW5hbHlzaXMnLAorICAgICAgICBleGVjdXRlOiBhc3luYyBmdW5jdGlvbiAoc291cmNlLCBw
YXJhbWV0ZXJzKSB7CisgICAgICAgICAgICBjb25zdCBzZWdtZW50YXRpb24gPSAgYXdhaXQgc291
cmNlLm1lYXN1cmVtZW50U2V0LmZldGNoU2VnbWVudGF0aW9uKCdzZWdtZW50VGltZVNlcmllc0J5
TWF4aW1pemluZ1NjaHdhcnpDcml0ZXJpb24nLCBwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAg
IHNvdXJjZS50eXBlLCBzb3VyY2UuaW5jbHVkZU91dGxpZXJzLCBzb3VyY2UuZXh0ZW5kVG9GdXR1
cmUpOworICAgICAgICAgICAgaWYgKCFzZWdtZW50YXRpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuIHNlZ21lbnRhdGlvbjsKKworICAgICAgICAgICAgY29uc3QgbWV0cmljID0gTWV0cmljLmZp
bmRCeUlkKHNvdXJjZS5tZWFzdXJlbWVudFNldC5tZXRyaWNJZCgpKTsKKyAgICAgICAgICAgIGNv
bnN0IHRpbWVTZXJpZXMgPSBzb3VyY2UubWVhc3VyZW1lbnRTZXQuZmV0Y2hlZFRpbWVTZXJpZXMo
c291cmNlLnR5cGUsIHNvdXJjZS5pbmNsdWRlT3V0bGllcnMsIHNvdXJjZS5leHRlbmRUb0Z1dHVy
ZSk7CisgICAgICAgICAgICBzZWdtZW50YXRpb24uYW5hbHlzaXNBbm5vdGF0aW9ucyA9IFN0YXRp
c3RpY3MuZmluZFJhbmdlc0ZvckNoYW5nZURldGVjdGlvbnNXaXRoV2VsY2hzVFRlc3QodGltZVNl
cmllcy52YWx1ZXMoKSwgc2VnbWVudGF0aW9uLCBwYXJhbWV0ZXJzW3BhcmFtZXRlcnMubGVuZ3Ro
IC0gMV0pLm1hcCgocmFuZ2UpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBzdGFydFBvaW50
ID0gdGltZVNlcmllcy5maW5kUG9pbnRCeUluZGV4KHJhbmdlLnN0YXJ0SW5kZXgpOworICAgICAg
ICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGltZVNlcmllcy5maW5kUG9pbnRCeUluZGV4KHJh
bmdlLmVuZEluZGV4KTsKKyAgICAgICAgICAgICAgICBjb25zdCBzdW1tYXJ5ID0gbWV0cmljLnN1
bW1hcml6ZUZvclZhbHVlcyhyYW5nZS5zZWdtZW50YXRpb25TdGFydFZhbHVlLCByYW5nZS5zZWdt
ZW50YXRpb25FbmRWYWx1ZSwgJ3Byb2dyZXNzaW9uJywgJ3JlZ3Jlc3Npb24nKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgICB0YXNrOiBudWxsLAorICAgICAg
ICAgICAgICAgICAgICBzdGFydFRpbWU6IHN0YXJ0UG9pbnQudGltZSwKKyAgICAgICAgICAgICAg
ICAgICAgZW5kVGltZTogZW5kUG9pbnQudGltZSwKKyAgICAgICAgICAgICAgICAgICAgbGFiZWw6
IGBQb3RlbnRpYWwgJHtzdW1tYXJ5LmNoYW5nZUxhYmVsfWAsCisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnRhdGlvbjsKKyAgICAg
ICAgfSwKKyAgICAgICAgcGFyYW1ldGVyTGlzdDogWworICAgICAgICAgICAge2xhYmVsOiAiU2Vn
bWVudCBjb3VudCB3ZWlnaHQiLCB2YWx1ZTogMi41LCBtaW46IDAuMDEsIG1heDogMTAsIHN0ZXA6
IDAuMDF9LAorICAgICAgICAgICAge2xhYmVsOiAiR3JpZCBzaXplIiwgdmFsdWU6IDUwMCwgbWlu
OiAxMDAsIG1heDogMTAwMDAsIHN0ZXA6IDEwfSwKKyAgICAgICAgICAgIHtsYWJlbDogInQtdGVz
dCBzaWduaWZpY2FuY2UiLCB2YWx1ZTogMC45OSwgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IFN0
YXRpc3RpY3Muc3VwcG9ydGVkT25lU2lkZVRUZXN0UHJvYmFiaWxpdGllcygpfSwKKyAgICAgICAg
XQorICAgIH0sCisgICAgewogICAgICAgICBpZDogMSwKICAgICAgICAgbGFiZWw6ICdTaW1wbGUg
TW92aW5nIEF2ZXJhZ2UnLAogICAgICAgICBwYXJhbWV0ZXJMaXN0OiBbCkBAIC00MTcsMTEgKzQ0
NywyMSBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBhbmVCYXNlIHsKICAgICAgICAg
ICAgIHRoaXMucmVuZGVyUmVwbGFjZSh0aGlzLmNvbnRlbnQoKS5xdWVyeVNlbGVjdG9yKCcudHJl
bmQtbGluZS1wYXJhbWV0ZXItbGlzdCcpLCBbCiAgICAgICAgICAgICAgICAgZWxlbWVudCgnaDMn
LCAnUGFyYW1ldGVycycpLAogICAgICAgICAgICAgICAgIGVsZW1lbnQoJ3VsJywgdGhpcy5fdHJl
bmRMaW5lVHlwZS5wYXJhbWV0ZXJMaXN0Lm1hcChmdW5jdGlvbiAocGFyYW1ldGVyLCBpbmRleCkg
eworICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1ldGVyLnR5cGUgPT0gJ3NlbGVjdCcpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdCA9IGVsZW1lbnQoJ3NlbGVjdCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyLm9wdGlvbnMubWFwKChvcHRp
b24pID0+IGVsZW1lbnQoJ29wdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHt2YWx1ZTogb3B0aW9uLCBzZWxlY3RlZDogb3B0aW9uID09IHBhcmFtZXRlci52YWx1ZX0sIG9w
dGlvbikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5vbmNoYW5nZSA9IHNlbGYu
X3RyZW5kTGluZVBhcmFtZXRlckRpZENoYW5nZS5iaW5kKHNlbGYpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0LnBhcmFtZXRlckluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudCgnbGknLCBlbGVtZW50KCdsYWJlbCcsIFtwYXJhbWV0ZXIu
bGFiZWwgKyAnOiAnLCBzZWxlY3RdKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHt0eXBlOiAnbnVtYmVyJ307CiAgICAgICAg
ICAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gcGFyYW1ldGVyKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlc1tuYW1lXSA9IHBhcmFtZXRlcltuYW1lXTsKKwogICAgICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGVzLnZhbHVlID0gY29uZmlndXJlZFBhcmFtZXRlcnNbaW5kZXhd
OwotICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPSBlbGVtZW50KCdpbnB1dCcsIGF0dHJp
YnV0ZXMpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGVsZW1lbnQoJ2lucHV0
JywgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlucHV0LnBhcmFtZXRlckluZGV4
ID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIGlucHV0Lm9uaW5wdXQgPSBzZWxmLl90cmVu
ZExpbmVQYXJhbWV0ZXJEaWRDaGFuZ2UuYmluZChzZWxmKTsKICAgICAgICAgICAgICAgICAgICAg
aW5wdXQub25jaGFuZ2UgPSBzZWxmLl90cmVuZExpbmVQYXJhbWV0ZXJEaWRDaGFuZ2UuYmluZChz
ZWxmKTsKQEAgLTQ3NSw3ICs1MTUsNyBAQCBjbGFzcyBDaGFydFBhbmUgZXh0ZW5kcyBDaGFydFBh
bmVCYXNlIHsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJlbmRMaW5lKCk7CiAgICAgfQogCi0gICAg
X3VwZGF0ZVRyZW5kTGluZSgpCisgICAgYXN5bmMgX3VwZGF0ZVRyZW5kTGluZSgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX21haW5DaGFydC5zb3VyY2VMaXN0KCkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC00ODQsNyArNTI0LDYgQEAgY2xhc3MgQ2hhcnRQYW5lIGV4dGVuZHMgQ2hhcnRQ
YW5lQmFzZSB7CiAgICAgICAgIHZhciBjdXJyZW50VHJlbmRMaW5lVHlwZSA9IHRoaXMuX3RyZW5k
TGluZVR5cGUgfHwgQ2hhcnRUcmVuZExpbmVUeXBlcy5EZWZhdWx0VHlwZTsKICAgICAgICAgdmFy
IGN1cnJlbnRUcmVuZExpbmVQYXJhbWV0ZXJzID0gdGhpcy5fdHJlbmRMaW5lUGFyYW1ldGVycyB8
fCB0aGlzLl9kZWZhdWx0UGFyYW1ldGVyc0ZvclRyZW5kTGluZShjdXJyZW50VHJlbmRMaW5lVHlw
ZSk7CiAgICAgICAgIHZhciBjdXJyZW50VHJlbmRMaW5lVmVyc2lvbiA9IHRoaXMuX3RyZW5kTGlu
ZVZlcnNpb247Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgdmFyIHNvdXJjZUxp
c3QgPSB0aGlzLl9tYWluQ2hhcnQuc291cmNlTGlzdCgpOwogCiAgICAgICAgIGlmICghY3VycmVu
dFRyZW5kTGluZVR5cGUuZXhlY3V0ZSkgewpAQCAtNDkyLDE0ICs1MzEsMTcgQEAgY2xhc3MgQ2hh
cnRQYW5lIGV4dGVuZHMgQ2hhcnRQYW5lQmFzZSB7CiAgICAgICAgICAgICB0aGlzLmVucXVldWVU
b1JlbmRlcigpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2FpdCBmb3IgYWxs
IHRyZW5kbGluZXMgdG8gYmUgcmVhZHkuIE90aGVyd2lzZSB3ZSBtaWdodCBzZWUgRk9DIHdoZW4g
dGhlIGRvbWFpbiBpcyBleHBhbmRlZC4KLSAgICAgICAgICAgIFByb21pc2UuYWxsKHNvdXJjZUxp
c3QubWFwKGZ1bmN0aW9uIChzb3VyY2UsIHNvdXJjZUluZGV4KSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGN1cnJlbnRUcmVuZExpbmVUeXBlLmV4ZWN1dGUuY2FsbChudWxsLCBzb3VyY2UsIGN1
cnJlbnRUcmVuZExpbmVQYXJhbWV0ZXJzKS50aGVuKGZ1bmN0aW9uICh0cmVuZGxpbmVTZXJpZXMp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX3RyZW5kTGluZVZlcnNpb24gPT0gY3Vy
cmVudFRyZW5kTGluZVZlcnNpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYWlu
Q2hhcnQuc2V0VHJlbmRMaW5lKHNvdXJjZUluZGV4LCB0cmVuZGxpbmVTZXJpZXMpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSkpLnRoZW4oZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgICAgIHNlbGYuZW5xdWV1ZVRvUmVuZGVyKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHNvdXJjZUxpc3QubWFwKGFzeW5jIChzb3VyY2UsIHNv
dXJjZUluZGV4KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgdHJlbmRsaW5lU2VyaWVzID0g
YXdhaXQgY3VycmVudFRyZW5kTGluZVR5cGUuZXhlY3V0ZS5jYWxsKG51bGwsIHNvdXJjZSwgY3Vy
cmVudFRyZW5kTGluZVBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLl90cmVu
ZExpbmVWZXJzaW9uID09IGN1cnJlbnRUcmVuZExpbmVWZXJzaW9uKQorICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9tYWluQ2hhcnQuc2V0VHJlbmRMaW5lKHNvdXJjZUluZGV4LCB0cmVuZGxpbmVT
ZXJpZXMpOworCisgICAgICAgICAgICAgICAgaWYgKHRyZW5kbGluZVNlcmllcyAmJiB0cmVuZGxp
bmVTZXJpZXMuYW5hbHlzaXNBbm5vdGF0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5f
ZGV0ZWN0ZWRBbm5vdGF0aW9ucyA9IHRyZW5kbGluZVNlcmllcy5hbmFseXNpc0Fubm90YXRpb25z
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGV0ZWN0
ZWRBbm5vdGF0aW9ucyA9IG51bGw7CisgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICB0aGlz
LmVucXVldWVUb1JlbmRlcigpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzIGIvV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3VuaXQtdGVzdHMvc3RhdGlzdGljcy10ZXN0cy5qcwppbmRl
eCBkNTY0NDcxYjI5MGU0NTJlYTlkZmY1YTdiNWFlM2Q2Mjc1ZGMyZDU5Li5kOTEwNDIyMTJhMWJm
MTlhMWRiN2QxNmI1ZWM3YTMwMWFiNjNiZGRkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdW5pdC10ZXN0cy9zdGF0aXN0aWNzLXRlc3RzLmpzCisrKyBiL1dlYnNpdGVzL3Bl
cmYud2Via2l0Lm9yZy91bml0LXRlc3RzL3N0YXRpc3RpY3MtdGVzdHMuanMKQEAgLTM4OCw0ICsz
ODgsOTYgQEAgZGVzY3JpYmUoJ1N0YXRpc3RpY3MnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKFN0YXRpc3RpY3Muc2VnbWVudFRpbWVTZXJpZXNCeU1heGltaXpp
bmdTY2h3YXJ6Q3JpdGVyaW9uKHZhbHVlcyksIFsgMCwgNiwgMTYsIDI2LCAzNyBdKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CisKKyAgICBkZXNjcmliZSgnZmluZFJhbmdlc0ZvckNoYW5nZURldGVj
dGlvbnNXaXRoV2VsY2hzVFRlc3QnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJu
IGFuIGVtcHR5IGFycmF5IGlmIHRoZSB2YWx1ZSBpcyBlbXB0eSBsaXN0JywgKCkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNzLmZpbmRSYW5nZXNGb3JDaGFuZ2VE
ZXRlY3Rpb25zV2l0aFdlbGNoc1RUZXN0KFtdLCBbXSwgMC45NzUpLCBbXSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGFycmF5IGlmIHNlZ21lbnRh
dGlvbiBpcyBlbXB0eSBsaXN0JywgKCkgPT4geworICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChTdGF0aXN0aWNzLmZpbmRSYW5nZXNGb3JDaGFuZ2VEZXRlY3Rpb25zV2l0aFdlbGNoc1RUZXN0
KFsxLDIsM10sIFtdLCAwLjk3NSksIFtdKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3No
b3VsZCByZXR1cm4gdGhlIHJhbmdlIGlmIGNvbXB1dGVXZWxjaHNUIHNob3dzIGEgc2lnbmlmaWNh
bnQgY2hhbmdlJywgKCkgPT4geworICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gWworICAgICAg
ICAgICAgICAgIDc0Ny4zMDMzNzQyMzc0NCwKKyAgICAgICAgICAgICAgICA3MzEuNDczOTI1ODUy
NzYsCisgICAgICAgICAgICAgICAgNzQzLjY2NzYzNTEzMTYxLAorICAgICAgICAgICAgICAgIDcz
OC4wMjA1NTMyMzQ4NywKKyAgICAgICAgICAgICAgICA3MzguMjU0MjYzNDA4NDIsCisgICAgICAg
ICAgICAgICAgNzQyLjM4NjgwMDQ2NDcxLAorICAgICAgICAgICAgICAgIDczMy4xMzkyMTcwMzI4
NCwKKyAgICAgICAgICAgICAgICA3MzkuMjIwNjk5NjYxNDcsCisgICAgICAgICAgICAgICAgNzM1
LjY5Mjk1NzQ5NjMzLAorICAgICAgICAgICAgICAgIDc0My4wMTcwNTQ3MjUwNCwKKyAgICAgICAg
ICAgICAgICA3NDUuNDU3NzgxNDUzMDYsCisgICAgICAgICAgICAgICAgNzMxLjA0ODQxMTU3MTY5
LAorICAgICAgICAgICAgICAgIDcyOS40MzcyNjc0OTczLAorICAgICAgICAgICAgICAgIDczNS40
NDk3NDE2NTI3LAorICAgICAgICAgICAgICAgIDczOS4wMjMwNjY4NjQ0LAorICAgICAgICAgICAg
ICAgIDczMC45MTc4Mjk4OTkwOSwKKyAgICAgICAgICAgICAgICA3MjIuMTg3MjU0MTEyNzksCisg
ICAgICAgICAgICAgICAgNzMxLjk2MjIzNDUxNzI4LAorICAgICAgICAgICAgICAgIDczMC4wNDEx
OTIxNjE5MiwKKyAgICAgICAgICAgICAgICA3MzAuNzgwODc2NDYyODQsCisgICAgICAgICAgICAg
ICAgNzI5LjYzMTU1MjEwMzY1LAorICAgICAgICAgICAgICAgIDczMC4xNzU4NTIwMDg3OCwKKyAg
ICAgICAgICAgICAgICA3MzMuOTM3NjYwNTQ3MDYsCisgICAgICAgICAgICAgICAgNzQwLjc0OTIw
NzE3MTk3LAorICAgICAgICAgICAgICAgIDc1Mi4xNDcxODAyMzY0NywKKyAgICAgICAgICAgICAg
ICA3NjQuNDk5OTAxNjQ4NDcsCisgICAgICAgICAgICAgICAgNzY2LjM2MTAwODI4NDczLAorICAg
ICAgICAgICAgICAgIDc1Ni4yMjkxODgzMjUyLAorICAgICAgICAgICAgICAgIDc1MC4xNDUyMjQ1
MTA5NywKKyAgICAgICAgICAgICAgICA3NDkuNTc1OTUwOTIyNjYsCisgICAgICAgICAgICAgICAg
NzQ4LjAzNjI0ODgxODY2LAorICAgICAgICAgICAgICAgIDc2OS40MTUyMjE3NjM4NiwKKyAgICAg
ICAgICAgICAgICA3NDQuMDQ2NjA0MzA0NTYsCisgICAgICAgICAgICAgICAgNzUxLjE3OTI3ODA4
MjY1LAorICAgICAgICAgICAgICAgIDc1My4yOTk5Njg1NDA2MiwKKyAgICAgICAgICAgICAgICA3
NTcuMDE4MTM3NTY5MzYsCisgICAgICAgICAgICAgICAgNzQ2LjYyNDEzODIwNzQxLAorICAgICAg
ICAgICAgICAgIDc0Mi42NDQyMDA2MjczNiwKKyAgICAgICAgICAgICAgICA3NTguMTI3MjYzNTI3
NzIsCisgICAgICAgICAgICAgICAgNzc4LjIyNzg0MzkwODksCisgICAgICAgICAgICAgICAgNzc1
LjExODE4NTU0NTQxLAorICAgICAgICAgICAgICAgIDc3NS4xMTgxODU1NDU0MV07CisgICAgICAg
ICAgICBjb25zdCBzZWdtZW50YXRpb24gPSBbeworICAgICAgICAgICAgICAgICAgICBzZXJpZXNJ
bmRleDogMCwKKyAgICAgICAgICAgICAgICAgICAgdGltZTogMTUwNTE3NjAzMDY3MSwKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWU6IDczNi41MzY2NzA0ODk2NTU1LAorICAgICAgICAgICAgICAg
ICAgICB4OiAzNzAuNDU3MTc4OTQwNDU2NiwKKyAgICAgICAgICAgICAgICAgICAgeTogMTg1LjUy
NjEzMzM0NTIwMjQ4LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogMTgsCisgICAgICAgICAgICAgICAgICAgIHRp
bWU6IDE1MTUwNzQzOTE1MzQsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiA3MzYuNTM2Njcw
NDg5NjU1NSwKKyAgICAgICAgICAgICAgICAgICAgeDogOTE5LjQxODM4NTI3MTQ5NDcsCisgICAg
ICAgICAgICAgICAgICAgIHk6IDE4NS41MjYxMzMzNDUyMDI0OAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzZXJpZXNJbmRleDogMTgs
CisgICAgICAgICAgICAgICAgICAgIHRpbWU6IDE1MTUwNzQzOTE1MzQsCisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlOiA3NTAuMzQ4MzQyODM4MzE0MiwKKyAgICAgICAgICAgICAgICAgICAgeDog
OTE5LjQxODM4NTI3MTQ5NDcsCisgICAgICAgICAgICAgICAgICAgIHk6IDE3Ny45NzEwOTUzNDA5
NjczLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBzZXJpZXNJbmRleDogNDEsCisgICAgICAgICAgICAgICAgICAgIHRpbWU6IDE1NTM4
NTE2OTU4NjksCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiA3NTAuMzQ4MzQyODM4MzE0MiwK
KyAgICAgICAgICAgICAgICAgICAgeDogMzA3MC4wMDAyOTA3NjQ0NDYsCisgICAgICAgICAgICAg
ICAgICAgIHk6IDE3Ny45NzEwOTUzNDA5NjczLAorICAgICAgICAgICAgICAgIH1dOworICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChTdGF0aXN0aWNzLmZpbmRSYW5nZXNGb3JDaGFuZ2VEZXRl
Y3Rpb25zV2l0aFdlbGNoc1RUZXN0KHZhbHVlcywgc2VnbWVudGF0aW9uLCAwLjk3NSksIFsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAiZW5kSW5kZXgiOiAyOSwKKyAgICAg
ICAgICAgICAgICAgICJzZWdtZW50YXRpb25FbmRWYWx1ZSI6IDc1MC4zNDgzNDI4MzgzMTQyLAor
ICAgICAgICAgICAgICAgICAgInNlZ21lbnRhdGlvblN0YXJ0VmFsdWUiOiA3MzYuNTM2NjcwNDg5
NjU1NSwKKyAgICAgICAgICAgICAgICAgICJzdGFydEluZGV4IjogNgorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIF0pOworICAgICAgICB9KQorICAgIH0pOwogfSk7Cg==
</data>
<flag name="review"
          id="355451"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>