<?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>217750</bug_id>
          
          <creation_ts>2020-10-15 04:18:59 -0700</creation_ts>
          <short_desc>[GStreamer] Encoder probing support for the registry scanner</short_desc>
          <delta_ts>2020-10-16 06:23:51 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1698062</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-15 04:18:59 -0700</bug_when>
    <thetext>This would be useful for the mediacapabilities spec implementation. Currently we probe only for decoders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698066</commentid>
    <comment_count>1</comment_count>
      <attachid>411427</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-15 04:34:10 -0700</bug_when>
    <thetext>Created attachment 411427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698493</commentid>
    <comment_count>2</comment_count>
      <attachid>411427</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-10-16 01:14:04 -0700</bug_when>
    <thetext>Comment on attachment 411427
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:175
&gt; +        Optional&lt;HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&gt; mimeTypeSet;
&gt; +        Optional&lt;HashMap&lt;AtomString, bool&gt;&gt; codecMap;

Why do you need to make this Optional if you&apos;re not checking if the value is there?

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h:47
&gt; +    HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; mimeTypeSet(Configuration);

Can&apos;t you return a const here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698504</commentid>
    <comment_count>3</comment_count>
      <attachid>411427</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-16 01:47:55 -0700</bug_when>
    <thetext>Comment on attachment 411427
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:175
&gt;&gt; +        Optional&lt;HashMap&lt;AtomString, bool&gt;&gt; codecMap;
&gt; 
&gt; Why do you need to make this Optional if you&apos;re not checking if the value is there?

No need indeed!

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.h:47
&gt;&gt; +    HashSet&lt;String, ASCIICaseInsensitiveHash&gt;&amp; mimeTypeSet(Configuration);
&gt; 
&gt; Can&apos;t you return a const here?

Yes :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698506</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-16 01:53:00 -0700</bug_when>
    <thetext>Committed r268576: &lt;https://trac.webkit.org/changeset/268576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698507</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-16 01:53:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/70370485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698541</commentid>
    <comment_count>6</comment_count>
      <attachid>411427</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-16 05:30:37 -0700</bug_when>
    <thetext>Comment on attachment 411427
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:175
&gt;&gt;&gt; +        Optional&lt;HashMap&lt;AtomString, bool&gt;&gt; codecMap;
&gt;&gt; 
&gt;&gt; Why do you need to make this Optional if you&apos;re not checking if the value is there?
&gt; 
&gt; No need indeed!

Ah I remember now... I used Optional&lt;&gt; because it keeps an internal reference, which is needed here, because the HashMap and HashSet are modified below...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698547</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-10-16 05:40:11 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #4)
&gt; Committed r268576: &lt;https://trac.webkit.org/changeset/268576&gt;

This has caused 35 new failures on layout tests for GTK:

  imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html [ Failure ]
  media/audio-controls-rendering.html [ Failure ]
  media/audio-playback-restriction-removed-muted.html [ Failure ]
  media/audio-playback-volume-changes-with-restrictions-and-user-gestures.html [ Failure ]
  media/media-can-play-flac-audio.html [ Failure ]
  media/media-can-play-wav-audio.html [ Failure ]
  media/restricted-audio-playback-with-document-gesture.html [ Failure ]
  media/video-controls-visible-audio-only.html [ Failure ]
  userscripts/user-script-audio-document.html [ Failure ]
  userscripts/user-script-video-document.html [ Failure ]
  imported/w3c/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html [ Crash ]
  imported/w3c/web-platform-tests/html/canvas/offscreen/path-objects/2d.path.arc.selfintersect.1.html [ Crash ]
  http/tests/media/video-buffered-range-contains-currentTime.html [ Timeout ]
  http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html [ Timeout ]
  http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html [ Timeout ]
  http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html [ Timeout ]
  http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin.html [ Timeout ]
  media/audio-background-playback-playlist.html [ Timeout ]
  media/audio-constructor-preload.html [ Timeout ]
  media/audio-constructor-src.html [ Timeout ]
  media/audio-constructor.html [ Timeout ]
  media/audio-controls-timeline-in-media-document.html [ Timeout ]
  media/audio-data-url.html [ Timeout ]
  media/audio-delete-while-slider-thumb-clicked.html [ Timeout ]
  media/audio-play-event.html [ Timeout ]
  media/controls-should-not-trigger-isolates-blending.html [ Timeout ]
  media/media-continues-playing-after-replace-source.html [ Timeout ]
  media/media-document-audio-controls-visible.html [ Timeout ]
  media/media-document-audio-size.html [ Timeout ]
  media/media-higher-prio-audio-stream.html [ Timeout ]
  media/media-load-event.html [ Timeout ]
  media/media-volume-slider-rendered-below.html [ Timeout ]
  media/restricted-audio-playback-with-multiple-settimeouts.html [ Timeout ]
  media/video-defaultmuted.html [ Timeout ]
  media/video-rtl.html [ Timeout ]


Check previous run (for r268575) -&gt; https://build.webkit.org/builders/GTK-Linux-64-bit-Release-Tests/builds/16457
Check run for this commit (r268576) -&gt; https://build.webkit.org/builders/GTK-Linux-64-bit-Release-Tests/builds/16458

Results of the tests here: https://build.webkit.org/results/GTK-Linux-64-bit-Release-Tests/r268576%20(16458)/results.html


This doesn&apos;t seem to have caused issue on the WPE bots because those tests are skipped for WPE :\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698563</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-16 06:23:51 -0700</bug_when>
    <thetext>https://trac.webkit.org/r268586</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411427</attachid>
            <date>2020-10-15 04:34:10 -0700</date>
            <delta_ts>2020-10-16 01:14:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217750-20201015043409.patch</filename>
            <type>text/plain</type>
            <size>61246</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBkMTk0ZThlOWMyYjI4
Y2QyMDViNDk2ZjE3ZjM5ZDZhMTU3M2Y3Yy4uNThhZDk0ZmE1ZDZhMjBkMzMzZWY0MzkwYjA4M2Iy
MmVjZTczZWQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTEwLTE1ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBFbmNvZGVyIHByb2Jpbmcgc3VwcG9ydCBmb3IgdGhlIHJlZ2lzdHJ5IHNjYW5uZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc1MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzY2FubmVyIGlz
IG5vdyBhYmxlIHRvIHByb2JlIGZvciBwbGF0Zm9ybSBlbmNvZGVycyBmb3IgdGhlIG1vc3QgY29t
bW9uIGZvcm1hdHM6IGF2YzEsCisgICAgICAgIGF2MSwgb2dnLCB0aGVvcmEsIGFhYyBhbmQgb3B1
cy4gVGhlIG11eGVycyBmb3Igd2VibSBhbmQgbXA0IGFyZSBhbHNvIGNoZWNrZWQuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyBtZWRpYWNhcGFiaWxpdGllcyB0ZXN0IGNvdmVyIHRo
aXMgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6On5HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjptaW1lVHlwZVNldCk6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmlzQ29udGFpbmVy
VHlwZVN1cHBvcnRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6Omhhc0VsZW1lbnRGb3JNZWRpYVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpmaWxsTWltZVR5cGVTZXRGcm9tQ2Fwc01hcHBp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFs
aXplRGVjb2RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
Ojppbml0aWFsaXplRW5jb2RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjppc0NvZGVjU3VwcG9ydGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmFyZUFsbENvZGVjc1N1
cHBvcnRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OmlzQVZDMUNvZGVjU3VwcG9ydGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Y29uZmlndXJhdGlvbk5hbWVGb3JMb2dnaW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb25maWd1cmF0
aW9uU3VwcG9ydGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OmlzRGVjb2RpbmdTdXBwb3J0ZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0VuY29kaW5nU3VwcG9ydGVkIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6
c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdT
dHJlYW1lcjo6Y2FuRGVjb2RlVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGluZ0NvbmZpZ3VyYXRpb25HU3Ry
ZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmdldFN1cHBvcnRlZFR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9y
dHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpwYXJzZURl
bXV4ZXJTcmNQYWRDYXBzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmdldFN1cHBvcnRlZFR5cGVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6c3VwcG9ydHNU
eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZhY3Rvcmllcyk6CisK
IDIwMjAtMTAtMTUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywgbWlkIE9jdG9iZXIgMjAyMCwgdGFr
ZSB0d28KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXgg
ZDNkMWUxZjFmNzZmN2FmZDdiZGM4YmMyM2EwOWU2ZDgxOWZjZGY4Yi4uNGZjNTFhNDRjMTZlM2I0
NWZhYzFmMWQxOTljNjVjZTBlMjc3MDE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxmbm1hdGNoLmg+
CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvY29kZWMtdXRpbHMuaD4KICNpbmNsdWRlIDx3dGYvUHJp
bnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ4LDEzICs0OSwyMiBAQCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcihib29sIGlzTWVkaWFTb3VyY2UpCiAgICAgbV92aWRlb1BhcnNl
ckZhY3RvcmllcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMoR1NUX0VM
RU1FTlRfRkFDVE9SWV9UWVBFX1BBUlNFUiB8IEdTVF9FTEVNRU5UX0ZBQ1RPUllfVFlQRV9NRURJ
QV9WSURFTywgR1NUX1JBTktfTUFSR0lOQUwpOwogICAgIG1fZGVtdXhlckZhY3RvcmllcyA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMoR1NUX0VMRU1FTlRfRkFDVE9SWV9U
WVBFX0RFTVVYRVIsIEdTVF9SQU5LX01BUkdJTkFMKTsKIAotICAgIGluaXRpYWxpemUoKTsKKyAg
ICBtX2F1ZGlvRW5jb2RlckZhY3RvcmllcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRf
ZWxlbWVudHMoR1NUX0VMRU1FTlRfRkFDVE9SWV9UWVBFX0VOQ09ERVIgfCBHU1RfRUxFTUVOVF9G
QUNUT1JZX1RZUEVfTUVESUFfQVVESU8sIEdTVF9SQU5LX01BUkdJTkFMKTsKKyAgICBtX3ZpZGVv
RW5jb2RlckZhY3RvcmllcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMo
R1NUX0VMRU1FTlRfRkFDVE9SWV9UWVBFX0VOQ09ERVIgfCBHU1RfRUxFTUVOVF9GQUNUT1JZX1RZ
UEVfTUVESUFfVklERU8sIEdTVF9SQU5LX01BUkdJTkFMKTsKKyAgICBtX211eGVyRmFjdG9yaWVz
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9saXN0X2dldF9lbGVtZW50cyhHU1RfRUxFTUVOVF9GQUNU
T1JZX1RZUEVfTVVYRVIsIEdTVF9SQU5LX01BUkdJTkFMKTsKKworICAgIGluaXRpYWxpemVEZWNv
ZGVycygpOworICAgIGluaXRpYWxpemVFbmNvZGVycygpOwogI2lmbmRlZiBHU1RfRElTQUJMRV9H
U1RfREVCVUcKICAgICBHU1RfREVCVUcoIiVzIHJlZ2lzdHJ5IHNjYW5uZXIgaW5pdGlhbGl6ZWQi
LCBtX2lzTWVkaWFTb3VyY2UgPyAiTVNFIiA6ICJSZWd1bGFyIHBsYXliYWNrIik7Ci0gICAgZm9y
IChhdXRvJiBtaW1lVHlwZSA6IG1fbWltZVR5cGVTZXQpCi0gICAgICAgIEdTVF9ERUJVRygiTWlt
ZS10eXBlIHJlZ2lzdGVyZWQ6ICVzIiwgbWltZVR5cGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgZm9y
IChhdXRvJiBpdGVtIDogbV9jb2RlY01hcCkKLSAgICAgICAgR1NUX0RFQlVHKCIlcyBjb2RlYyBw
YXR0ZXJuIHJlZ2lzdGVyZWQ6ICVzIiwgaXRlbS52YWx1ZSA/ICJIYXJkd2FyZSIgOiAiU29mdHdh
cmUiLCBpdGVtLmtleS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBmb3IgKGF1dG8mIG1p
bWVUeXBlIDogbV9kZWNvZGVyTWltZVR5cGVTZXQpCisgICAgICAgIEdTVF9ERUJVRygiRGVjb2Rl
ciBtaW1lLXR5cGUgcmVnaXN0ZXJlZDogJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2RlY29kZXJDb2RlY01hcCkKKyAgICAgICAgR1NUX0RFQlVH
KCIlcyBkZWNvZGVyIGNvZGVjIHBhdHRlcm4gcmVnaXN0ZXJlZDogJXMiLCBpdGVtLnZhbHVlID8g
IkhhcmR3YXJlIiA6ICJTb2Z0d2FyZSIsIGl0ZW0ua2V5LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBtX2VuY29kZXJNaW1lVHlwZVNldCkKKyAgICAg
ICAgR1NUX0RFQlVHKCJFbmNvZGVyIG1pbWUtdHlwZSByZWdpc3RlcmVkOiAlcyIsIG1pbWVUeXBl
LnV0ZjgoKS5kYXRhKCkpOworICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW5jb2RlckNvZGVjTWFw
KQorICAgICAgICBHU1RfREVCVUcoIiVzIGVuY29kZXIgY29kZWMgcGF0dGVybiByZWdpc3RlcmVk
OiAlcyIsIGl0ZW0udmFsdWUgPyAiSGFyZHdhcmUiIDogIlNvZnR3YXJlIiwgaXRlbS5rZXkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIH0KIApAQCAtNjUsMTUgKzc1LDY1IEBAIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6fkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcigpCiAgICAg
Z3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShtX3ZpZGVvRGVjb2RlckZhY3Rvcmllcyk7CiAg
ICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShtX3ZpZGVvUGFyc2VyRmFjdG9yaWVzKTsK
ICAgICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlKG1fZGVtdXhlckZhY3Rvcmllcyk7Cisg
ICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShtX2F1ZGlvRW5jb2RlckZhY3Rvcmllcyk7
CisgICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShtX3ZpZGVvRW5jb2RlckZhY3Rvcmll
cyk7CisgICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShtX211eGVyRmFjdG9yaWVzKTsK
K30KKworSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6bWltZVR5cGVTZXQoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
KQoreworICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAgIGNhc2UgQ29uZmlndXJhdGlv
bjo6RGVjb2Rpbmc6CisgICAgICAgIHJldHVybiBtX2RlY29kZXJNaW1lVHlwZVNldDsKKyAgICBj
YXNlIENvbmZpZ3VyYXRpb246OkVuY29kaW5nOgorICAgICAgICByZXR1cm4gbV9lbmNvZGVyTWlt
ZVR5cGVTZXQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBt
X2RlY29kZXJNaW1lVHlwZVNldDsKK30KKworYm9vbCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OmlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFN0
cmluZyBjb250YWluZXJUeXBlKSBjb25zdAoreworICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikg
eworICAgIGNhc2UgQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmc6CisgICAgICAgIHJldHVybiBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5jb250YWlucyhjb250YWluZXJUeXBlKTsKKyAgICBjYXNlIENvbmZp
Z3VyYXRpb246OkVuY29kaW5nOgorICAgICAgICByZXR1cm4gbV9lbmNvZGVyTWltZVR5cGVTZXQu
Y29udGFpbnMoY29udGFpbmVyVHlwZSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKIH0KIAogR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdp
c3RyeUxvb2t1cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Omhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoR0xpc3QqIGVsZW1lbnRGYWN0b3JpZXMsIGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcs
IGJvb2wgc2hvdWxkQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIsIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBibGFja0xpc3QpIGNvbnN0CiB7CisgICAgR3N0UGFkRGlyZWN0aW9uIHBhZERpcmVjdGlv
biA9IEdTVF9QQURfU0lOSzsKKyAgICBpZiAoZWxlbWVudEZhY3RvcmllcyA9PSBtX2F1ZGlvRW5j
b2RlckZhY3RvcmllcyB8fCBlbGVtZW50RmFjdG9yaWVzID09IG1fdmlkZW9FbmNvZGVyRmFjdG9y
aWVzIHx8IGVsZW1lbnRGYWN0b3JpZXMgPT0gbV9tdXhlckZhY3RvcmllcykKKyAgICAgICAgcGFk
RGlyZWN0aW9uID0gR1NUX1BBRF9TUkM7CiAgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gYWRv
cHRHUmVmKGdzdF9jYXBzX2Zyb21fc3RyaW5nKGNhcHNTdHJpbmcpKTsKLSAgICBHTGlzdCogY2Fu
ZGlkYXRlcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9maWx0ZXIoZWxlbWVudEZhY3Rvcmll
cywgY2Fwcy5nZXQoKSwgR1NUX1BBRF9TSU5LLCBmYWxzZSk7CisgICAgR0xpc3QqIGNhbmRpZGF0
ZXMgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2xpc3RfZmlsdGVyKGVsZW1lbnRGYWN0b3JpZXMsIGNh
cHMuZ2V0KCksIHBhZERpcmVjdGlvbiwgZmFsc2UpOwogICAgIGJvb2wgaXNTdXBwb3J0ZWQgPSBj
YW5kaWRhdGVzOwogICAgIGJvb2wgaXNVc2luZ0hhcmR3YXJlID0gZmFsc2U7CiAKKyAgICBjb25z
dCBjaGFyKiBlbGVtZW50VHlwZSA9ICIiOworICAgIGlmIChlbGVtZW50RmFjdG9yaWVzID09IG1f
YXVkaW9QYXJzZXJGYWN0b3JpZXMpCisgICAgICAgIGVsZW1lbnRUeXBlID0gImF1ZGlvIHBhcnNl
ciI7CisgICAgZWxzZSBpZiAoZWxlbWVudEZhY3RvcmllcyA9PSBtX2F1ZGlvRGVjb2RlckZhY3Rv
cmllcykKKyAgICAgICAgZWxlbWVudFR5cGUgPSAiYXVkaW8gZGVjb2RlciI7CisgICAgZWxzZSBp
ZiAoZWxlbWVudEZhY3RvcmllcyA9PSBtX3ZpZGVvUGFyc2VyRmFjdG9yaWVzKQorICAgICAgICBl
bGVtZW50VHlwZSA9ICJ2aWRlbyBwYXJzZXIiOworICAgIGVsc2UgaWYgKGVsZW1lbnRGYWN0b3Jp
ZXMgPT0gbV92aWRlb0RlY29kZXJGYWN0b3JpZXMpCisgICAgICAgIGVsZW1lbnRUeXBlID0gInZp
ZGVvIGRlY29kZXIiOworICAgIGVsc2UgaWYgKGVsZW1lbnRGYWN0b3JpZXMgPT0gbV9kZW11eGVy
RmFjdG9yaWVzKQorICAgICAgICBlbGVtZW50VHlwZSA9ICJkZW11eGVyIjsKKyAgICBlbHNlIGlm
IChlbGVtZW50RmFjdG9yaWVzID09IG1fYXVkaW9FbmNvZGVyRmFjdG9yaWVzKQorICAgICAgICBl
bGVtZW50VHlwZSA9ICJhdWRpbyBlbmNvZGVyIjsKKyAgICBlbHNlIGlmIChlbGVtZW50RmFjdG9y
aWVzID09IG1fdmlkZW9FbmNvZGVyRmFjdG9yaWVzKQorICAgICAgICBlbGVtZW50VHlwZSA9ICJ2
aWRlbyBlbmNvZGVyIjsKKyAgICBlbHNlIGlmIChlbGVtZW50RmFjdG9yaWVzID09IG1fbXV4ZXJG
YWN0b3JpZXMpCisgICAgICAgIGVsZW1lbnRUeXBlID0gIm11eGVyIjsKKyAgICBlbHNlCisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCiAgICAgaWYgKGJsYWNrTGlzdC5oYXNWYWx1ZSgp
ICYmICFibGFja0xpc3QtPmlzRW1wdHkoKSkgewogICAgICAgICBib29sIGhhc1ZhbGlkQ2FuZGlk
YXRlID0gZmFsc2U7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7
IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9yaWVzKSkgewpAQCAtODQs
NyArMTQ0LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1cFJlc3Vs
dCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Omhhc0VsZW0KICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghaGFzVmFsaWRDYW5kaWRhdGUpIHsKLSAgICAgICAgICAg
IEdTVF9XQVJOSU5HKCJBbGwgZWxlbWVudHMgZm9yIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQgIiBh
cmUgYmxhY2tsaXN0ZWQiLCBjYXBzLmdldCgpKTsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJB
bGwgJXMgZWxlbWVudHMgbWF0Y2hpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCAiIGFyZSBibGFj
a2xpc3RlZCIsIGVsZW1lbnRUeXBlLCBjYXBzLmdldCgpKTsKICAgICAgICAgICAgIGlzU3VwcG9y
dGVkID0gZmFsc2U7CiAgICAgICAgICAgICBzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9
IGZhbHNlOwogICAgICAgICB9CkBAIC0xMDMsMjIgKzE2Myw3IEBAIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpo
YXNFbGVtCiAgICAgfQogCiAgICAgZ3N0X3BsdWdpbl9mZWF0dXJlX2xpc3RfZnJlZShjYW5kaWRh
dGVzKTsKLSNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCi0gICAgY29uc3QgY2hhciogZWxl
bWVudFR5cGUgPSAiIjsKLSAgICBpZiAoZWxlbWVudEZhY3RvcmllcyA9PSBtX2F1ZGlvUGFyc2Vy
RmFjdG9yaWVzKQotICAgICAgICBlbGVtZW50VHlwZSA9ICJBdWRpbyBwYXJzZXIiOwotICAgIGVs
c2UgaWYgKGVsZW1lbnRGYWN0b3JpZXMgPT0gbV9hdWRpb0RlY29kZXJGYWN0b3JpZXMpCi0gICAg
ICAgIGVsZW1lbnRUeXBlID0gIkF1ZGlvIGRlY29kZXIiOwotICAgIGVsc2UgaWYgKGVsZW1lbnRG
YWN0b3JpZXMgPT0gbV92aWRlb1BhcnNlckZhY3RvcmllcykKLSAgICAgICAgZWxlbWVudFR5cGUg
PSAiVmlkZW8gcGFyc2VyIjsKLSAgICBlbHNlIGlmIChlbGVtZW50RmFjdG9yaWVzID09IG1fdmlk
ZW9EZWNvZGVyRmFjdG9yaWVzKQotICAgICAgICBlbGVtZW50VHlwZSA9ICJWaWRlbyBkZWNvZGVy
IjsKLSAgICBlbHNlIGlmIChlbGVtZW50RmFjdG9yaWVzID09IG1fZGVtdXhlckZhY3RvcmllcykK
LSAgICAgICAgZWxlbWVudFR5cGUgPSAiRGVtdXhlciI7Ci0gICAgZWxzZQotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICBHU1RfTE9HKCIlcyBsb29rdXAgcmVzdWx0IGZvciBjYXBz
ICUiIEdTVF9QVFJfRk9STUFUICIgOiBpc1N1cHBvcnRlZD0lcywgaXNVc2luZ0hhcmR3YXJlPSVz
IiwgZWxlbWVudFR5cGUsIGNhcHMuZ2V0KCksIGJvb2xGb3JQcmludGluZyhpc1N1cHBvcnRlZCks
IGJvb2xGb3JQcmludGluZyhpc1VzaW5nSGFyZHdhcmUpKTsKLSNlbmRpZgorICAgIEdTVF9MT0co
Ikxvb2t1cCByZXN1bHQgZm9yICVzIG1hdGNoaW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQgIiA6
IGlzU3VwcG9ydGVkPSVzLCBpc1VzaW5nSGFyZHdhcmU9JXMiLCBlbGVtZW50VHlwZSwgY2Fwcy5n
ZXQoKSwgYm9vbEZvclByaW50aW5nKGlzU3VwcG9ydGVkKSwgYm9vbEZvclByaW50aW5nKGlzVXNp
bmdIYXJkd2FyZSkpOwogICAgIHJldHVybiBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lz
dHJ5TG9va3VwUmVzdWx0IHsgaXNTdXBwb3J0ZWQsIGlzVXNpbmdIYXJkd2FyZSB9OwogfQogCkBA
IC0xMjYsNTMgKzE3MSw3NiBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6ZmlsbE1p
bWVUeXBlU2V0RnJvbUNhcHNNYXBwaW5nKFZlY3RvcjxHc3RDYXBzV2ViSwogewogICAgIGZvciAo
YXV0byYgY3VycmVudCA6IG1hcHBpbmcpIHsKICAgICAgICAgR0xpc3QqIGZhY3RvcmllczsKKyAg
ICAgICAgT3B0aW9uYWw8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+
IG1pbWVUeXBlU2V0OworICAgICAgICBPcHRpb25hbDxIYXNoTWFwPEF0b21TdHJpbmcsIGJvb2w+
PiBjb2RlY01hcDsKICAgICAgICAgc3dpdGNoIChjdXJyZW50LmVsZW1lbnRUeXBlKSB7CiAgICAg
ICAgIGNhc2UgRGVtdXhlcjoKICAgICAgICAgICAgIGZhY3RvcmllcyA9IG1fZGVtdXhlckZhY3Rv
cmllczsKKyAgICAgICAgICAgIGNvZGVjTWFwID0gbV9kZWNvZGVyQ29kZWNNYXA7CisgICAgICAg
ICAgICBtaW1lVHlwZVNldCA9IG1fZGVjb2Rlck1pbWVUeXBlU2V0OwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQXVkaW9EZWNvZGVyOgogICAgICAgICAgICAgZmFjdG9yaWVzID0g
bV9hdWRpb0RlY29kZXJGYWN0b3JpZXM7CisgICAgICAgICAgICBjb2RlY01hcCA9IG1fZGVjb2Rl
ckNvZGVjTWFwOworICAgICAgICAgICAgbWltZVR5cGVTZXQgPSBtX2RlY29kZXJNaW1lVHlwZVNl
dDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZpZGVvRGVjb2RlcjoKICAgICAg
ICAgICAgIGZhY3RvcmllcyA9IG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVzOworICAgICAgICAgICAg
Y29kZWNNYXAgPSBtX2RlY29kZXJDb2RlY01hcDsKKyAgICAgICAgICAgIG1pbWVUeXBlU2V0ID0g
bV9kZWNvZGVyTWltZVR5cGVTZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBN
dXhlcjoKKyAgICAgICAgICAgIGZhY3RvcmllcyA9IG1fbXV4ZXJGYWN0b3JpZXM7CisgICAgICAg
ICAgICBjb2RlY01hcCA9IG1fZW5jb2RlckNvZGVjTWFwOworICAgICAgICAgICAgbWltZVR5cGVT
ZXQgPSBtX2VuY29kZXJNaW1lVHlwZVNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEF1ZGlvRW5jb2RlcjoKKyAgICAgICAgICAgIGZhY3RvcmllcyA9IG1fYXVkaW9FbmNvZGVy
RmFjdG9yaWVzOworICAgICAgICAgICAgY29kZWNNYXAgPSBtX2VuY29kZXJDb2RlY01hcDsKKyAg
ICAgICAgICAgIG1pbWVUeXBlU2V0ID0gbV9lbmNvZGVyTWltZVR5cGVTZXQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBWaWRlb0VuY29kZXI6CisgICAgICAgICAgICBmYWN0b3Jp
ZXMgPSBtX3ZpZGVvRW5jb2RlckZhY3RvcmllczsKKyAgICAgICAgICAgIGNvZGVjTWFwID0gbV9l
bmNvZGVyQ29kZWNNYXA7CisgICAgICAgICAgICBtaW1lVHlwZVNldCA9IG1fZW5jb2Rlck1pbWVU
eXBlU2V0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaGFz
RWxlbWVudEZvck1lZGlhVHlwZShmYWN0b3JpZXMsIGN1cnJlbnQuY2Fwc1N0cmluZykpIHsKICAg
ICAgICAgICAgIGlmICghY3VycmVudC53ZWJraXRDb2RlY1BhdHRlcm5zLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0dGVybiA6IGN1cnJlbnQud2Via2l0
Q29kZWNQYXR0ZXJucykKLSAgICAgICAgICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQocGF0dGVy
biwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBjb2RlY01hcC0+YWRkKHBhdHRlcm4sIGZh
bHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghY3VycmVudC53ZWJraXRNaW1l
VHlwZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtaW1l
VHlwZSA6IGN1cnJlbnQud2Via2l0TWltZVR5cGVzKQotICAgICAgICAgICAgICAgICAgICBtX21p
bWVUeXBlU2V0LmFkZChtaW1lVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlU2V0
LT5hZGQobWltZVR5cGUpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV9t
aW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZyhjdXJyZW50LmNhcHNTdHJpbmcpKTsKKyAgICAgICAg
ICAgICAgICBtaW1lVHlwZVNldC0+YWRkKEF0b21TdHJpbmcoY3VycmVudC5jYXBzU3RyaW5nKSk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpp
bml0aWFsaXplKCkKK3ZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVj
b2RlcnMoKQogewogICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNvZGVy
RmFjdG9yaWVzLCAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKLSAgICAgICAg
bV9taW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIikpOwotICAgICAgICBtX21p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDQiKSk7Ci0gICAgICAgIG1fbWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbTRhIikpOwotICAgICAgICBtX2NvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJtcGVnIiksIGZhbHNlKTsKLSAgICAgICAgbV9jb2RlY01hcC5hZGQo
QXRvbVN0cmluZygibXA0YSoiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vYWFjIikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXA0IikpOworICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tNGEiKSk7CisgICAgICAgIG1fZGVjb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcGVnIiksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNGEqIiksIGZhbHNlKTsKICAgICB9CiAKICAg
ICBhdXRvIG9wdXNTdXBwb3J0ZWQgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNv
ZGVyRmFjdG9yaWVzLCAiYXVkaW8veC1vcHVzIik7CiAgICAgaWYgKG9wdXNTdXBwb3J0ZWQgJiYg
KCFtX2lzTWVkaWFTb3VyY2UgfHwgaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2F1ZGlvUGFyc2Vy
RmFjdG9yaWVzLCAiYXVkaW8veC1vcHVzIikpKSB7Ci0gICAgICAgIG1fbWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL29wdXMiKSk7Ci0gICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoIm9wdXMiKSwgZmFsc2UpOwotICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ4LW9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8vb3B1cyIpKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoIm9wdXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygieC1vcHVzIiksIGZhbHNlKTsKICAgICB9CiAKICAgICBhdXRvIHZvcmJpc1N1
cHBvcnRlZCA9IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV9hdWRpb0RlY29kZXJGYWN0b3JpZXMs
ICJhdWRpby94LXZvcmJpcyIpOwogICAgIGlmICh2b3JiaXNTdXBwb3J0ZWQgJiYgKCFtX2lzTWVk
aWFTb3VyY2UgfHwgaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2F1ZGlvUGFyc2VyRmFjdG9yaWVz
LCAiYXVkaW8veC12b3JiaXMiKSkpIHsKLSAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmlu
Zygidm9yYmlzIiksIGZhbHNlKTsKLSAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
eC12b3JiaXMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygidm9yYmlzIiksIGZhbHNlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsKICAgICB9CiAKICAgICBib29sIG1hdHJvc2th
U3VwcG9ydGVkID0gaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2RlbXV4ZXJGYWN0b3JpZXMsICJ2
aWRlby94LW1hdHJvc2thIik7CkBAIC0xODEsMzcgKzI0OSwzNyBAQCB2b2lkIEdTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGF1dG8gdnA5RGVjb2RlckF2YWls
YWJsZSA9IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV92aWRlb0RlY29kZXJGYWN0b3JpZXMsICJ2
aWRlby94LXZwOSIsIHRydWUpOwogCiAgICAgICAgIGlmICh2cDhEZWNvZGVyQXZhaWxhYmxlIHx8
IHZwOURlY29kZXJBdmFpbGFibGUpCi0gICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJ2aWRlby93ZWJtIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoInZpZGVvL3dlYm0iKSk7CiAKICAgICAgICAgaWYgKHZwOERlY29kZXJB
dmFpbGFibGUpIHsKLSAgICAgICAgICAgIG1fY29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOCIp
LCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2Nv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LXZwOCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7Ci0gICAgICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ2cDgu
MCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgICAgICBt
X2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4IiksIHZwOERlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ4LXZwOCIpLCB2cDhEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA4LjAiKSwg
dnA4RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICB9CiAgICAgICAg
IGlmICh2cDlEZWNvZGVyQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2NvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ2cDkiKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwot
ICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC12cDkiKSwgdnA5RGVjb2Rl
ckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnA5LjAiKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwotICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygidnAwOSoiKSwgdnA5RGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOSIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
eC12cDkiKSwgdnA5RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICAg
ICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIiksIHZwOURlY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ2cDA5KiIpLCB2cDlEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG9wdXNTdXBwb3J0ZWQpCi0gICAgICAgICAg
ICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby93ZWJtIikpOworICAgICAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3dlYm0iKSk7CiAg
ICAgfQogCiAgICAgYXV0byBoMjY0RGVjb2RlckF2YWlsYWJsZSA9IGhhc0VsZW1lbnRGb3JNZWRp
YVR5cGUobV92aWRlb0RlY29kZXJGYWN0b3JpZXMsICJ2aWRlby94LWgyNjQsIHByb2ZpbGU9KHN0
cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSwgaGlnaCB9IiwgdHJ1ZSk7CiAg
ICAgaWYgKGgyNjREZWNvZGVyQXZhaWxhYmxlICYmICghbV9pc01lZGlhU291cmNlIHx8IGhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUobV92aWRlb1BhcnNlckZhY3RvcmllcywgInZpZGVvL3gtaDI2NCIp
KSkgewotICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiKSk7
Ci0gICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoInZpZGVvL3gtbTR2IikpOwot
ICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiKSwgaDI2NERlY29kZXJB
dmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKLSAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0
cmluZygiYXZjKiIpLCBoMjY0RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwotICAg
ICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDR2KiIpLCBoMjY0RGVjb2RlckF2YWls
YWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygidmlkZW8vbXA0IikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ4LWgyNjQiKSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKKyAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2Yyoi
KSwgaDI2NERlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wNHYqIiksIGgyNjREZWNvZGVyQXZhaWxhYmxl
LmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gYXYxRGVjb2Rl
cnNCbGFja2xpc3QgeyAiYXYxZGVjIl9zIH07Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8
fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoInZpZGVvL21wNCIpKSAmJiBoYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVzLCAidmlkZW8veC1hdjEiLCBmYWxzZSwg
bWFrZU9wdGlvbmFsKFdURk1vdmUoYXYxRGVjb2RlcnNCbGFja2xpc3QpKSkpIHsKLSAgICAgICAg
bV9jb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgZmFsc2UpOwotICAgICAgICBtX2Nv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgZmFsc2UpOwotICAgICAgICBtX2NvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ4LWF2MSIpLCBmYWxzZSk7CisgICAgaWYgKChtYXRyb3NrYVN1cHBv
cnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmcs
ICJ2aWRlby9tcDQiKSkgJiYgaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX3ZpZGVvRGVjb2RlckZh
Y3RvcmllcywgInZpZGVvL3gtYXYxIiwgZmFsc2UsIG1ha2VPcHRpb25hbChXVEZNb3ZlKGF2MURl
Y29kZXJzQmxhY2tsaXN0KSkpKSB7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJhdjAxKiIpLCBmYWxzZSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJhdjEiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygieC1hdjEiKSwgZmFsc2UpOwogICAgIH0KIAogICAgIGlmIChtX2lzTWVkaWFT
b3VyY2UpCkBAIC0yNDgsNTQgKzMxNiwxMzUgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OmluaXRpYWxpemUoKQogICAgIGZpbGxNaW1lVHlwZVNldEZyb21DYXBzTWFwcGluZyhtYXBw
aW5nKTsKIAogICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fZGVtdXhlckZhY3Rvcmll
cywgImFwcGxpY2F0aW9uL29nZyIpKSB7Ci0gICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImFwcGxpY2F0aW9uL29nZyIpKTsKKyAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImFwcGxpY2F0aW9uL29nZyIpKTsKIAogICAgICAgICBpZiAodm9yYmlz
U3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJh
dWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJh
dWRpby94LXZvcmJpcytvZ2ciKSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOworICAgICAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtdm9yYmlzK29nZyIpKTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9EZWNvZGVyRmFjdG9y
aWVzLCAiYXVkaW8veC1zcGVleCIpKSB7Ci0gICAgICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9vZ2ciKSk7Ci0gICAgICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJzcGVleCIpLCBmYWxzZSk7CisgICAgICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8vb2dnIikpOworICAgICAgICAgICAgbV9kZWNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoInNwZWV4IiksIGZhbHNlKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVzLCAi
dmlkZW8veC10aGVvcmEiKSkgewotICAgICAgICAgICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbVN0
cmluZygidmlkZW8vb2dnIikpOwotICAgICAgICAgICAgbV9jb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygidGhlb3JhIiksIGZhbHNlKTsKKyAgICAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJ2aWRlby9vZ2ciKSk7CisgICAgICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygidGhlb3JhIiksIGZhbHNlKTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIGJvb2wgYXVkaW9NcGVnU3VwcG9ydGVkID0gZmFsc2U7CiAgICAgaWYgKGhhc0VsZW1lbnRG
b3JNZWRpYVR5cGUobV9hdWRpb0RlY29kZXJGYWN0b3JpZXMsICJhdWRpby9tcGVnLCBtcGVndmVy
c2lvbj0oaW50KTEsIGxheWVyPShpbnQpWzEsIDNdIikpIHsKICAgICAgICAgYXVkaW9NcGVnU3Vw
cG9ydGVkID0gdHJ1ZTsKLSAgICAgICAgbV9taW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVk
aW8vbXAxIikpOwotICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9t
cDMiKSk7Ci0gICAgICAgIG1fbWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXAz
IikpOwotICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDMiKSwgZmFs
c2UpOwotICAgICAgICBtX2NvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDMiKSwgZmFsc2UpOwor
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAxIikp
OworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAz
IikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC1tcDMiKSk7CisgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdWRp
by9tcDMiKSwgZmFsc2UpOworICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmlu
ZygibXAzIiksIGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShtX2F1ZGlvRGVjb2RlckZhY3RvcmllcywgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQp
MiIpKSB7CiAgICAgICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCA9IHRydWU7Ci0gICAgICAgIG1fbWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKKyAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAgICB9CiAKLSAgICBh
dWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKCJhdWRpby9tcDQi
KTsKKyAgICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENv
bmZpZ3VyYXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0Iik7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1
cHBvcnRlZCkgewotICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9t
cGVnIikpOwotICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1w
ZWciKSk7CisgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRp
by9tcGVnIikpOworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygi
YXVkaW8veC1tcGVnIikpOwogICAgIH0KIAogICAgIGlmIChtYXRyb3NrYVN1cHBvcnRlZCkgewot
ICAgICAgICBtX21pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby94LW1hdHJvc2thIikp
OworICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1t
YXRyb3NrYSIpKTsKIAogICAgICAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX3ZpZGVv
RGVjb2RlckZhY3RvcmllcywgInZpZGVvL3gtdnAxMCIpKQotICAgICAgICAgICAgbV9taW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8vd2VibSIpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIikpOwogICAgIH0KIH0KIAot
Ym9vbCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmlzQ29kZWNTdXBwb3J0ZWQoU3RyaW5nIGNv
ZGVjLCBib29sIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpIGNvbnN0Cit2b2lkIEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZUVuY29kZXJzKCkKK3sKKyAgICAvLyBNU0UgaXMg
YWJvdXQgcGxheWJhY2ssIHdoaWNoIG1lYW5zIGRlY29kaW5nLiBObyBuZWVkIHRvIGNoZWNrIGZv
ciBlbmNvZGVycyB0aGVuLgorICAgIGlmIChtX2lzTWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gYWFjU3VwcG9ydGVkID0gaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX2F1
ZGlvRW5jb2RlckZhY3RvcmllcywgImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCIpOwor
ICAgIGlmIChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fYXVkaW9FbmNvZGVyRmFjdG9yaWVzLCAi
YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0IikpIHsKKyAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoIm1wZWciKSwgZmFsc2UpOworICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygibXA0YSoiKSwgZmFsc2UpOworICAgIH0KKworICAgIGF1
dG8gb3B1c1N1cHBvcnRlZCA9IGhhc0VsZW1lbnRGb3JNZWRpYVR5cGUobV9hdWRpb0VuY29kZXJG
YWN0b3JpZXMsICJhdWRpby94LW9wdXMiKTsKKyAgICBpZiAob3B1c1N1cHBvcnRlZCkgeworICAg
ICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygib3B1cyIpLCBmYWxzZSk7Cisg
ICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LW9wdXMiKSwgZmFsc2Up
OworICAgIH0KKworICAgIGF1dG8gdm9yYmlzU3VwcG9ydGVkID0gaGFzRWxlbWVudEZvck1lZGlh
VHlwZShtX2F1ZGlvRW5jb2RlckZhY3RvcmllcywgImF1ZGlvL3gtdm9yYmlzIik7CisgICAgaWYg
KHZvcmJpc1N1cHBvcnRlZCkgeworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygidm9yYmlzIiksIGZhbHNlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoIngtdm9yYmlzIiksIGZhbHNlKTsKKyAgICB9CisKKyAgICBWZWN0b3I8U3RyaW5n
PiBhdjFFbmNvZGVyc0JsYWNrbGlzdCB7ICJhdjFlbmMiX3MgfTsKKyAgICBhdXRvIGF2MUVuY29k
ZXJBdmFpbGFibGUgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9FbmNvZGVyRmFjdG9y
aWVzLCAidmlkZW8veC1hdjEiLCB0cnVlLCBtYWtlT3B0aW9uYWwoV1RGTW92ZShhdjFFbmNvZGVy
c0JsYWNrbGlzdCkpKTsKKyAgICBpZiAoYXYxRW5jb2RlckF2YWlsYWJsZSkgeworICAgICAgICBt
X2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgZmFsc2UpOworICAgICAg
ICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGZhbHNlKTsKKyAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGZhbHNlKTsKKyAg
ICB9CisKKyAgICBhdXRvIHZwOEVuY29kZXJBdmFpbGFibGUgPSBoYXNFbGVtZW50Rm9yTWVkaWFU
eXBlKG1fdmlkZW9FbmNvZGVyRmFjdG9yaWVzLCAidmlkZW8veC12cDgiLCB0cnVlKTsKKyAgICBp
ZiAodnA4RW5jb2RlckF2YWlsYWJsZSkgeworICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygidnA4IiksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
KyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtdnA4IiksIHZwOEVu
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoInZwOC4wIiksIHZwOEVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKKyAgICB9CisKKyAgICBhdXRvIHZwOUVuY29kZXJBdmFpbGFibGUgPSBoYXNFbGVt
ZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9FbmNvZGVyRmFjdG9yaWVzLCAidmlkZW8veC12cDkiLCB0
cnVlKTsKKyAgICBpZiAodnA5RW5jb2RlckF2YWlsYWJsZSkgeworICAgICAgICBtX2VuY29kZXJD
b2RlY01hcC5hZGQoQXRvbVN0cmluZygidnA5IiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2lu
Z0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngt
dnA5IiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9l
bmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoInZwOS4wIiksIHZwOUVuY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoInZwMDkqIiksIHZwOUVuY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKKyAg
ICB9CisKKyAgICBpZiAoaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX211eGVyRmFjdG9yaWVzLCAi
dmlkZW8vd2VibSIpICYmICh2cDhFbmNvZGVyQXZhaWxhYmxlIHx8IHZwOUVuY29kZXJBdmFpbGFi
bGUgfHwgYXYxRW5jb2RlckF2YWlsYWJsZSkpCisgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0
LmFkZChBdG9tU3RyaW5nKCJ2aWRlby93ZWJtIikpOworCisgICAgaWYgKGhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUobV9tdXhlckZhY3RvcmllcywgImF1ZGlvL3dlYm0iKSkgeworICAgICAgICBpZiAo
b3B1c1N1cHBvcnRlZCkKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9vcHVzIikpOworICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygiYXVkaW8vd2VibSIpKTsKKyAgICB9CisKKyAgICBpZiAoaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShtX211eGVyRmFjdG9yaWVzLCAiYXVkaW8vb2dnIikgJiYgKHZvcmJpc1N1cHBv
cnRlZCB8fCBvcHVzU3VwcG9ydGVkKSkKKyAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQuYWRk
KEF0b21TdHJpbmcoImF1ZGlvL29nZyIpKTsKKworICAgIGF1dG8gaDI2NEVuY29kZXJBdmFpbGFi
bGUgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9FbmNvZGVyRmFjdG9yaWVzLCAidmlk
ZW8veC1oMjY0LCBwcm9maWxlPShzdHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGluZSwgYmFzZWxp
bmUsIGhpZ2ggfSIsIHRydWUpOworICAgIGlmIChoMjY0RW5jb2RlckF2YWlsYWJsZSkgeworICAg
ICAgICBtX2VuY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1oMjY0IiksIGgyNjRFbmNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJhdmMqIiksIGgyNjRFbmNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7CisgICAgICAgIG1fZW5jb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJtcDR2KiIp
LCBoMjY0RW5jb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOworICAgIH0KKworICAgIGlm
IChoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fbXV4ZXJGYWN0b3JpZXMsICJ2aWRlby9xdWlja3Rp
bWUiKSkgeworICAgICAgICBpZiAob3B1c1N1cHBvcnRlZCkKKyAgICAgICAgICAgIG1fZW5jb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9vcHVzIikpOworICAgICAgICBpZiAo
YWFjU3VwcG9ydGVkKSB7CisgICAgICAgICAgICBtX2VuY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8vYWFjIikpOworICAgICAgICAgICAgbV9lbmNvZGVyTWltZVR5cGVTZXQu
YWRkKEF0b21TdHJpbmcoImF1ZGlvL21wNCIpKTsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW00YSIpKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoaDI2NEVuY29kZXJBdmFpbGFibGUpIHsKKyAgICAgICAgICAgIG1fZW5jb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJ2aWRlby9tcDQiKSk7CisgICAgICAgICAgICBtX2VuY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygidmlkZW8veC1tNHYiKSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Jvb2wgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0NvZGVjU3VwcG9y
dGVkKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgU3RyaW5nIGNvZGVjLCBib29sIHNob3Vs
ZENoZWNrRm9ySGFyZHdhcmVVc2UpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIGNvZGVjIGlzIG5h
bWVkIGxpa2UgYSBtaW1ldHlwZSAoZWc6IHZpZGVvL2F2YykgcmVtb3ZlIHRoZSAidmlkZW8vIiBw
YXJ0LgogICAgIHNpemVfdCBzbGFzaEluZGV4ID0gY29kZWMuZmluZCgnLycpOwpAQCAtMzA0LDkg
KzQ1MywxMCBAQCBib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb2RlY1N1cHBvcnRl
ZChTdHJpbmcgY29kZWMsIGJvb2wgc2hvdWxkQ2hlY2tGbwogCiAgICAgYm9vbCBzdXBwb3J0ZWQg
PSBmYWxzZTsKICAgICBpZiAoY29kZWMuc3RhcnRzV2l0aCgiYXZjMSIpKQotICAgICAgICBzdXBw
b3J0ZWQgPSBpc0FWQzFDb2RlY1N1cHBvcnRlZChjb2RlYywgc2hvdWxkQ2hlY2tGb3JIYXJkd2Fy
ZVVzZSk7CisgICAgICAgIHN1cHBvcnRlZCA9IGlzQVZDMUNvZGVjU3VwcG9ydGVkKGNvbmZpZ3Vy
YXRpb24sIGNvZGVjLCBzaG91bGRDaGVja0ZvckhhcmR3YXJlVXNlKTsKICAgICBlbHNlIHsKLSAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogbV9jb2RlY01hcCkgeworICAgICAgICBhdXRv
JiBjb2RlY01hcCA9IGNvbmZpZ3VyYXRpb24gPT0gQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcgPyBt
X2RlY29kZXJDb2RlY01hcCA6IG1fZW5jb2RlckNvZGVjTWFwOworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIGl0ZW0gOiBjb2RlY01hcCkgewogICAgICAgICAgICAgaWYgKCFmbm1hdGNoKGl0ZW0u
a2V5LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGNvZGVjLnV0ZjgoKS5kYXRhKCksIDApKSB7CiAg
ICAgICAgICAgICAgICAgc3VwcG9ydGVkID0gc2hvdWxkQ2hlY2tGb3JIYXJkd2FyZVVzZSA/IGl0
ZW0udmFsdWUgOiB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWQpCkBAIC0zMTUs
MTYgKzQ2NSwxNyBAQCBib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb2RlY1N1cHBv
cnRlZChTdHJpbmcgY29kZWMsIGJvb2wgc2hvdWxkQ2hlY2tGbwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgR1NUX0xPRygiQ2hlY2tlZCAlcyBjb2RlYyBcIiVzXCIgc3VwcG9ydGVkICVzIiwgc2hv
dWxkQ2hlY2tGb3JIYXJkd2FyZVVzZSA/ICJoYXJkd2FyZSIgOiAic29mdHdhcmUiLCBjb2RlYy51
dGY4KCkuZGF0YSgpLCBib29sRm9yUHJpbnRpbmcoc3VwcG9ydGVkKSk7CisgICAgY29uc3QgY2hh
ciogY29uZmlnTG9nU3RyaW5nID0gY29uZmlndXJhdGlvbk5hbWVGb3JMb2dnaW5nKGNvbmZpZ3Vy
YXRpb24pOworICAgIEdTVF9MT0coIkNoZWNrZWQgJXMgJXMgY29kZWMgXCIlc1wiIHN1cHBvcnRl
ZCAlcyIsIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UgPyAiaGFyZHdhcmUiIDogInNvZnR3YXJl
IiwgY29uZmlnTG9nU3RyaW5nLCBjb2RlYy51dGY4KCkuZGF0YSgpLCBib29sRm9yUHJpbnRpbmco
c3VwcG9ydGVkKSk7CiAgICAgcmV0dXJuIHN1cHBvcnRlZDsKIH0KIAotTWVkaWFQbGF5ZXJFbnVt
czo6U3VwcG9ydHNUeXBlIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb250ZW50VHlwZVN1
cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFZlY3RvcjxDb250
ZW50VHlwZT4mIGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkgY29uc3QKK01l
ZGlhUGxheWVyRW51bXM6OlN1cHBvcnRzVHlwZSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Omlz
Q29udGVudFR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBjb25zdCBD
b250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIGNvbnRl
bnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkgY29uc3QKIHsKICAgICB1c2luZyBTdXBw
b3J0c1R5cGUgPSBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGU7CiAKLSAgICBjb25zdCBh
dXRvJiBjb250YWluZXJUeXBlID0gY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwotICAgIGlm
ICghaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKGNvbnRhaW5lclR5cGUpKQorICAgIGNvbnN0IGF1
dG8mIGNvbnRhaW5lclR5cGUgPSBjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKTsKKyAgICBpZiAoIWlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChjb25m
aWd1cmF0aW9uLCBjb250YWluZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIFN1cHBvcnRzVHlwZTo6
SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICBjb25zdCBhdXRvJiBjb2RlY3MgPSBjb250ZW50VHlwZS5j
b2RlY3MoKTsKQEAgLTMzMyw3ICs0ODQsOCBAQCBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5
cGUgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0NvbnRlbnRUeXBlU3VwcG9ydGVkKAogICAg
IGlmIChjb2RlY3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3VwcG9ydHNUeXBlOjpNYXlC
ZVN1cHBvcnRlZDsKIAotICAgIGZvciAoY29uc3QgYXV0byYgY29kZWMgOiBjb2RlY3MpIHsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBjb2RlY3MpIHsKKyAgICAgICAgYXV0byBjb2RlYyA9
IGl0ZW0uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICAgICAgYm9vbCByZXF1aXJlc0hh
cmR3YXJlU3VwcG9ydCA9IGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydAogICAg
ICAgICAgICAgLmZpbmRNYXRjaGluZyhbY29udGFpbmVyVHlwZSwgY29kZWNdKGF1dG8mIGhhcmR3
YXJlQ29udGVudFR5cGUpIC0+IGJvb2wgewogICAgICAgICAgICAgYXV0byBoYXJkd2FyZUNvbnRh
aW5lciA9IGhhcmR3YXJlQ29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwpAQCAtMzQ2LDI3ICs0
OTgsMzUgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3VwcG9ydHNUeXBlIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6aXNDb250ZW50VHlwZVN1cHBvcnRlZCgKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICFmbm1hdGNoKGhhcmR3YXJlQ29kZWMudXRmOCgpLmRhdGEoKSwgY29kZWMudXRmOCgpLmRh
dGEoKSwgMCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkgIT0gbm90
Rm91bmQ7Ci0gICAgICAgIGlmICghaXNDb2RlY1N1cHBvcnRlZChjb2RlYywgcmVxdWlyZXNIYXJk
d2FyZVN1cHBvcnQpKQorICAgICAgICBpZiAoIWlzQ29kZWNTdXBwb3J0ZWQoY29uZmlndXJhdGlv
biwgY29kZWMsIHJlcXVpcmVzSGFyZHdhcmVTdXBwb3J0KSkKICAgICAgICAgICAgIHJldHVybiBT
dXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogICAgIH0KICAgICByZXR1cm4gU3VwcG9ydHNU
eXBlOjpJc1N1cHBvcnRlZDsKIH0KIAotYm9vbCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmFy
ZUFsbENvZGVjc1N1cHBvcnRlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29kZWNzLCBib29sIHNo
b3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpIGNvbnN0Citib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6YXJlQWxsQ29kZWNzU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcywgYm9vbCBzaG91bGRDaGVja0ZvckhhcmR3YXJl
VXNlKSBjb25zdAogewogICAgIGZvciAoU3RyaW5nIGNvZGVjIDogY29kZWNzKSB7Ci0gICAgICAg
IGlmICghaXNDb2RlY1N1cHBvcnRlZChjb2RlYywgc2hvdWxkQ2hlY2tGb3JIYXJkd2FyZVVzZSkp
CisgICAgICAgIGlmICghaXNDb2RlY1N1cHBvcnRlZChjb25maWd1cmF0aW9uLCBjb2RlYywgc2hv
dWxkQ2hlY2tGb3JIYXJkd2FyZVVzZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
Ojppc0FWQzFDb2RlY1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvZGVjLCBib29sIHNob3VsZENo
ZWNrRm9ySGFyZHdhcmVVc2UpIGNvbnN0Citib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
aXNBVkMxQ29kZWNTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBjb25zdCBT
dHJpbmcmIGNvZGVjLCBib29sIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpIGNvbnN0CiB7CiAg
ICAgYXV0byBjaGVja0gyNjRDYXBzID0gWyZdKGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcpIHsKICAg
ICAgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKLSAgICAgICAgYXV0byBsb29rdXBSZXN1bHQg
PSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9EZWNvZGVyRmFjdG9yaWVzLCBjYXBzU3Ry
aW5nLCB0cnVlKTsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgbG9va3VwUmVzdWx0Owor
ICAgICAgICBzd2l0Y2ggKGNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgY2FzZSBDb25maWd1cmF0
aW9uOjpEZWNvZGluZzoKKyAgICAgICAgICAgIGxvb2t1cFJlc3VsdCA9IGhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUobV92aWRlb0RlY29kZXJGYWN0b3JpZXMsIGNhcHNTdHJpbmcsIHRydWUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29uZmlndXJhdGlvbjo6RW5jb2Rpbmc6Cisg
ICAgICAgICAgICBsb29rdXBSZXN1bHQgPSBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKG1fdmlkZW9F
bmNvZGVyRmFjdG9yaWVzLCBjYXBzU3RyaW5nLCB0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIHN1cHBvcnRlZCA9IGxvb2t1cFJlc3VsdDsKICAgICAgICAgaWYg
KHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpCiAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBsb29r
dXBSZXN1bHQuaXNVc2luZ0hhcmR3YXJlOwpAQCAtNDM3LDMyICs1OTcsNDggQEAgYm9vbCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmlzQVZDMUNvZGVjU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYg
Y29kZWMsIGJvb2wgc2gKICAgICByZXR1cm4gY2hlY2tIMjY0Q2FwcygidmlkZW8veC1oMjY0Iik7
CiB9CiAKLUdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0RlY29kaW5nU3VwcG9ydGVkKE1lZGlhQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikgY29uc3QKK2NvbnN0IGNoYXIqIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6Y29uZmlndXJhdGlvbk5hbWVGb3JMb2dnaW5nKENvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikgY29uc3QKK3sKKyAgICBjb25zdCBjaGFyKiBjb25maWdMb2dTdHJpbmcgPSAiIjsK
KworICAgIHN3aXRjaCAoY29uZmlndXJhdGlvbikgeworICAgIGNhc2UgQ29uZmlndXJhdGlvbjo6
RW5jb2Rpbmc6CisgICAgICAgIGNvbmZpZ0xvZ1N0cmluZyA9ICJlbmNvZGluZyI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmc6CisgICAgICAgIGNvbmZp
Z0xvZ1N0cmluZyA9ICJkZWNvZGluZyI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1
cm4gY29uZmlnTG9nU3RyaW5nOworfQorCitHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lz
dHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNDb25maWd1cmF0aW9u
U3VwcG9ydGVkKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgTWVkaWFDb25maWd1cmF0aW9u
JiBtZWRpYUNvbmZpZ3VyYXRpb24pIGNvbnN0CiB7CiAgICAgYm9vbCBpc1N1cHBvcnRlZCA9IGZh
bHNlOwogICAgIGJvb2wgaXNVc2luZ0hhcmR3YXJlID0gZmFsc2U7CisgICAgY29uc3QgY2hhciog
Y29uZmlnTG9nU3RyaW5nID0gY29uZmlndXJhdGlvbk5hbWVGb3JMb2dnaW5nKGNvbmZpZ3VyYXRp
b24pOwogCi0gICAgaWYgKGNvbmZpZ3VyYXRpb24udmlkZW8pIHsKLSAgICAgICAgYXV0byYgdmlk
ZW9Db25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbi52aWRlby52YWx1ZSgpOwotICAgICAgICBH
U1RfREVCVUcoIkNoZWNraW5nIHN1cHBvcnQgZm9yIHZpZGVvIGNvbmZpZ3VyYXRpb246IFwiJXNc
IiBzaXplOiAldXgldSBiaXRyYXRlOiAlIiBHX0dVSU5UNjRfRk9STUFUICIgZnJhbWVyYXRlOiAl
ZiIsCisgICAgaWYgKG1lZGlhQ29uZmlndXJhdGlvbi52aWRlbykgeworICAgICAgICBhdXRvJiB2
aWRlb0NvbmZpZ3VyYXRpb24gPSBtZWRpYUNvbmZpZ3VyYXRpb24udmlkZW8udmFsdWUoKTsKKyAg
ICAgICAgR1NUX0RFQlVHKCJDaGVja2luZyAlcyBzdXBwb3J0IGZvciB2aWRlbyBjb25maWd1cmF0
aW9uOiBcIiVzXCIgc2l6ZTogJXV4JXUgYml0cmF0ZTogJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGZy
YW1lcmF0ZTogJWYiLCBjb25maWdMb2dTdHJpbmcsCiAgICAgICAgICAgICB2aWRlb0NvbmZpZ3Vy
YXRpb24uY29udGVudFR5cGUudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgIHZpZGVvQ29uZmln
dXJhdGlvbi53aWR0aCwgdmlkZW9Db25maWd1cmF0aW9uLmhlaWdodCwKICAgICAgICAgICAgIHZp
ZGVvQ29uZmlndXJhdGlvbi5iaXRyYXRlLCB2aWRlb0NvbmZpZ3VyYXRpb24uZnJhbWVyYXRlKTsK
IAogICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUodmlkZW9Db25maWd1cmF0
aW9uLmNvbnRlbnRUeXBlKTsKLSAgICAgICAgaXNTdXBwb3J0ZWQgPSBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpKTsKKyAgICAgICAgaXNTdXBwb3J0
ZWQgPSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoY29uZmlndXJhdGlvbiwgY29udGVudFR5cGUu
Y29udGFpbmVyVHlwZSgpKTsKICAgICAgICAgYXV0byBjb2RlY3MgPSBjb250ZW50VHlwZS5jb2Rl
Y3MoKTsKICAgICAgICAgaWYgKCFjb2RlY3MuaXNFbXB0eSgpKQotICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gYXJlQWxsQ29kZWNzU3VwcG9ydGVkKGNvZGVjcywgdHJ1ZSk7CisgICAgICAg
ICAgICBpc1VzaW5nSGFyZHdhcmUgPSBhcmVBbGxDb2RlY3NTdXBwb3J0ZWQoY29uZmlndXJhdGlv
biwgY29kZWNzLCB0cnVlKTsKICAgICB9CiAKLSAgICBpZiAoY29uZmlndXJhdGlvbi5hdWRpbykg
ewotICAgICAgICBhdXRvJiBhdWRpb0NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uLmF1ZGlv
LnZhbHVlKCk7Ci0gICAgICAgIEdTVF9ERUJVRygiQ2hlY2tpbmcgc3VwcG9ydCBmb3IgYXVkaW8g
Y29uZmlndXJhdGlvbjogXCIlc1wiICVzIGNoYW5uZWxzLCBiaXRyYXRlOiAlIiBHX0dVSU5UNjRf
Rk9STUFUICIgc2FtcGxlcmF0ZTogJXUiLAorICAgIGlmIChtZWRpYUNvbmZpZ3VyYXRpb24uYXVk
aW8pIHsKKyAgICAgICAgYXV0byYgYXVkaW9Db25maWd1cmF0aW9uID0gbWVkaWFDb25maWd1cmF0
aW9uLmF1ZGlvLnZhbHVlKCk7CisgICAgICAgIEdTVF9ERUJVRygiQ2hlY2tpbmcgJXMgc3VwcG9y
dCBmb3IgYXVkaW8gY29uZmlndXJhdGlvbjogXCIlc1wiICVzIGNoYW5uZWxzLCBiaXRyYXRlOiAl
IiBHX0dVSU5UNjRfRk9STUFUICIgc2FtcGxlcmF0ZTogJXUiLCBjb25maWdMb2dTdHJpbmcsCiAg
ICAgICAgICAgICBhdWRpb0NvbmZpZ3VyYXRpb24uY29udGVudFR5cGUudXRmOCgpLmRhdGEoKSwg
YXVkaW9Db25maWd1cmF0aW9uLmNoYW5uZWxzLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBh
dWRpb0NvbmZpZ3VyYXRpb24uYml0cmF0ZSwgYXVkaW9Db25maWd1cmF0aW9uLnNhbXBsZXJhdGUp
OwogICAgICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUoYXVkaW9Db25maWd1cmF0
aW9uLmNvbnRlbnRUeXBlKTsKLSAgICAgICAgaXNTdXBwb3J0ZWQgPSBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpKTsKKyAgICAgICAgaXNTdXBwb3J0
ZWQgPSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoY29uZmlndXJhdGlvbiwgY29udGVudFR5cGUu
Y29udGFpbmVyVHlwZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyOjpSZWdpc3RyeUxvb2t1cFJlc3VsdCB7IGlzU3VwcG9ydGVkLCBpc1VzaW5nSGFyZHdh
cmUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaAppbmRleCAwYjhl
ZjQ2NTM2YWE4NDQ3ZjAxZDg1MjZlMTEzMzA3ZTU5MWJhYmE3Li5jNTM1YjBmYjE0NmI0NzlkODEz
Mjc3NGVhMmU4NTg5NDM4MmZlYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lci5oCkBAIC0zOSw5ICszOSwxMyBAQCBjbGFzcyBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXImIHNpbmds
ZXRvbigpOwogCi0gICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IG1pbWVUeXBlU2V0KCkgeyByZXR1cm4gbV9taW1lVHlwZVNldDsgfQorICAgIGVudW0gQ29uZmln
dXJhdGlvbiB7CisgICAgICAgIERlY29kaW5nID0gMCwKKyAgICAgICAgRW5jb2RpbmcKKyAgICB9
OwogCi0gICAgYm9vbCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoU3RyaW5nIGNvbnRhaW5lclR5
cGUpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGVTZXQuY29udGFpbnMoY29udGFpbmVyVHlwZSk7
IH0KKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgbWltZVR5
cGVTZXQoQ29uZmlndXJhdGlvbik7CisgICAgYm9vbCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQo
Q29uZmlndXJhdGlvbiwgU3RyaW5nIGNvbnRhaW5lclR5cGUpIGNvbnN0OwogCiAgICAgc3RydWN0
IFJlZ2lzdHJ5TG9va3VwUmVzdWx0IHsKICAgICAgICAgYm9vbCBpc1N1cHBvcnRlZDsKQEAgLTQ5
LDIyICs1MywyOSBAQCBwdWJsaWM6CiAKICAgICAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuIGlzU3VwcG9ydGVkOyB9CiAgICAgfTsKLSAgICBSZWdpc3RyeUxvb2t1cFJlc3VsdCBp
c0RlY29kaW5nU3VwcG9ydGVkKE1lZGlhQ29uZmlndXJhdGlvbiYpIGNvbnN0OworICAgIFJlZ2lz
dHJ5TG9va3VwUmVzdWx0IGlzRGVjb2RpbmdTdXBwb3J0ZWQoTWVkaWFDb25maWd1cmF0aW9uJiBt
ZWRpYUNvbmZpZ3VyYXRpb24pIGNvbnN0IHsgcmV0dXJuIGlzQ29uZmlndXJhdGlvblN1cHBvcnRl
ZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgbWVkaWFDb25maWd1cmF0aW9uKTsgfTsKKyAgICBS
ZWdpc3RyeUxvb2t1cFJlc3VsdCBpc0VuY29kaW5nU3VwcG9ydGVkKE1lZGlhQ29uZmlndXJhdGlv
biYgbWVkaWFDb25maWd1cmF0aW9uKSBjb25zdCB7IHJldHVybiBpc0NvbmZpZ3VyYXRpb25TdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RW5jb2RpbmcsIG1lZGlhQ29uZmlndXJhdGlvbik7IH0KIAot
ICAgIGJvb2wgaXNDb2RlY1N1cHBvcnRlZChTdHJpbmcgY29kZWMsIGJvb2wgdXNpbmdIYXJkd2Fy
ZSA9IGZhbHNlKSBjb25zdDsKLSAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgaXND
b250ZW50VHlwZVN1cHBvcnRlZChjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0IFZlY3RvcjxDb250
ZW50VHlwZT4mIGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkgY29uc3Q7Ci0g
ICAgYm9vbCBhcmVBbGxDb2RlY3NTdXBwb3J0ZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVj
cywgYm9vbCBzaG91bGRDaGVja0ZvckhhcmR3YXJlVXNlID0gZmFsc2UpIGNvbnN0OworICAgIGJv
b2wgaXNDb2RlY1N1cHBvcnRlZChDb25maWd1cmF0aW9uLCBTdHJpbmcgY29kZWMsIGJvb2wgdXNp
bmdIYXJkd2FyZSA9IGZhbHNlKSBjb25zdDsKKyAgICBNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0
c1R5cGUgaXNDb250ZW50VHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uLCBjb25zdCBDb250ZW50
VHlwZSYsIGNvbnN0IFZlY3RvcjxDb250ZW50VHlwZT4mIGNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhcmVBbGxDb2RlY3NTdXBwb3J0ZWQoQ29u
ZmlndXJhdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvZGVjcywgYm9vbCBzaG91bGRDaGVj
a0ZvckhhcmR3YXJlVXNlID0gZmFsc2UpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyKGJvb2wgaXNNZWRpYVNvdXJjZSA9IGZhbHNlKTsKICAgICB+R1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyKCk7CiAKLSAgICB2b2lkIGluaXRpYWxpemUoKTsKKyAgICB2
b2lkIGluaXRpYWxpemVEZWNvZGVycygpOworICAgIHZvaWQgaW5pdGlhbGl6ZUVuY29kZXJzKCk7
CisKKyAgICBSZWdpc3RyeUxvb2t1cFJlc3VsdCBpc0NvbmZpZ3VyYXRpb25TdXBwb3J0ZWQoQ29u
ZmlndXJhdGlvbiwgTWVkaWFDb25maWd1cmF0aW9uJikgY29uc3Q7CiAKICAgICBlbnVtIEVsZW1l
bnRUeXBlIHsKICAgICAgICAgQXVkaW9EZWNvZGVyID0gMCwKICAgICAgICAgVmlkZW9EZWNvZGVy
LAotICAgICAgICBEZW11eGVyCisgICAgICAgIERlbXV4ZXIsCisgICAgICAgIEF1ZGlvRW5jb2Rl
ciwKKyAgICAgICAgVmlkZW9FbmNvZGVyLAorICAgICAgICBNdXhlcgogICAgIH07CiAgICAgc3Ry
dWN0IEdzdENhcHNXZWJLaXRNYXBwaW5nIHsKICAgICAgICAgRWxlbWVudFR5cGUgZWxlbWVudFR5
cGU7CkBAIC03NiwxNyArODcsMjQgQEAgcHJvdGVjdGVkOgogCiAgICAgUmVnaXN0cnlMb29rdXBS
ZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShHTGlzdCogZWxlbWVudEZhY3RvcmllcywgY29u
c3QgY2hhciogY2Fwc1N0cmluZywgYm9vbCBzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9
IGZhbHNlLCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYmxhY2tMaXN0ID0gV1RGOjpudWxsb3B0
KSBjb25zdDsKIAotICAgIGJvb2wgaXNBVkMxQ29kZWNTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBj
b2RlYywgYm9vbCBzaG91bGRDaGVja0ZvckhhcmR3YXJlVXNlKSBjb25zdDsKKyAgICBib29sIGlz
QVZDMUNvZGVjU3VwcG9ydGVkKENvbmZpZ3VyYXRpb24sIGNvbnN0IFN0cmluZyYgY29kZWMsIGJv
b2wgc2hvdWxkQ2hlY2tGb3JIYXJkd2FyZVVzZSkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgY29u
c3QgY2hhciogY29uZmlndXJhdGlvbk5hbWVGb3JMb2dnaW5nKENvbmZpZ3VyYXRpb24pIGNvbnN0
OworCiAgICAgYm9vbCBtX2lzTWVkaWFTb3VyY2U7CiAgICAgR0xpc3QqIG1fYXVkaW9EZWNvZGVy
RmFjdG9yaWVzOwogICAgIEdMaXN0KiBtX2F1ZGlvUGFyc2VyRmFjdG9yaWVzOwogICAgIEdMaXN0
KiBtX3ZpZGVvRGVjb2RlckZhY3RvcmllczsKICAgICBHTGlzdCogbV92aWRlb1BhcnNlckZhY3Rv
cmllczsKICAgICBHTGlzdCogbV9kZW11eGVyRmFjdG9yaWVzOwotICAgIEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fbWltZVR5cGVTZXQ7Ci0gICAgSGFzaE1hcDxB
dG9tU3RyaW5nLCBib29sPiBtX2NvZGVjTWFwOworICAgIEdMaXN0KiBtX2F1ZGlvRW5jb2RlckZh
Y3RvcmllczsKKyAgICBHTGlzdCogbV92aWRlb0VuY29kZXJGYWN0b3JpZXM7CisgICAgR0xpc3Qq
IG1fbXV4ZXJGYWN0b3JpZXM7CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4gbV9kZWNvZGVyTWltZVR5cGVTZXQ7CisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBi
b29sPiBtX2RlY29kZXJDb2RlY01hcDsKKyAgICBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiBtX2VuY29kZXJNaW1lVHlwZVNldDsKKyAgICBIYXNoTWFwPEF0b21TdHJp
bmcsIGJvb2w+IG1fZW5jb2RlckNvZGVjTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCBmYjQwMjczNGE5
N2Q4ZjhjMzkxNGQzZTZjYmY0MTk4NzNjZDMyMmUwLi4zYTRkY2JhNGRlMTMyMTg1Y2I3MzMwNmZm
MGM5MTVjZWJkYWM3NTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdT
dHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbQogCiBib29sIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKLSAgICByZXR1cm4gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpzaW5nbGV0b24oKS5p
c0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQodHlwZSk7CisgICAgcmV0dXJuIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIHR5cGUpOwogfQogCiBi
b29sIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQpAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpj
YW5EZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKG1pbWVUeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIEdTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKG1pbWVU
eXBlKTsKKyAgICByZXR1cm4gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpzaW5nbGV0b24oKS5p
c0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1
cmF0aW9uOjpEZWNvZGluZywgbWltZVR5cGUpOwogfQogCiBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVh
bWVyLmNwcAppbmRleCAzNzE5YTRlNzliZGVhNGVkMzU3M2U4ODBhZTI5NjgyMDAwMGI3YWMyLi44
MzQyNGIyOTg4YzNlYmRkMjdjM2I4ZDk3MmIyMTZlN2FkYTA0ZWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlHU3RyZWFt
ZXIuY3BwCkBAIC0zMiw3ICszMiw5IEBACiAKICNpbmNsdWRlICJHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuaCIKICNpbmNsdWRlICJNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5oIgorI2lu
Y2x1ZGUgIk1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmgiCiAjaW5jbHVkZSAiTWVkaWFE
ZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJNZWRpYUVuY29kaW5nQ29uZmlndXJh
dGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAKQEAgLTYzLDUgKzY1LDE2IEBAIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0Nv
bmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mCiAgICAgY2Fs
bGJhY2soV1RGTW92ZShpbmZvKSk7CiB9CiAKK3ZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGlu
Z0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0lu
Zm8mJik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byYgc2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CisgICAgYXV0byBsb29rdXBSZXN1bHQgPSBzY2FubmVy
LmlzRW5jb2RpbmdTdXBwb3J0ZWQoY29uZmlndXJhdGlvbik7CisgICAgTWVkaWFDYXBhYmlsaXRp
ZXNFbmNvZGluZ0luZm8gaW5mbzsKKyAgICBpbmZvLnN1cHBvcnRlZCA9IGxvb2t1cFJlc3VsdC5p
c1N1cHBvcnRlZDsKKyAgICBpbmZvLnBvd2VyRWZmaWNpZW50ID0gbG9va3VwUmVzdWx0LmlzVXNp
bmdIYXJkd2FyZTsKKyAgICBpbmZvLnN1cHBvcnRlZENvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pOworCisgICAgY2FsbGJhY2soV1RGTW92ZShpbmZvKSk7Cit9CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeUdTdHJlYW1lci5oCmluZGV4IGM4MjMzZmIyYmRhZTdlY2YzZWYyYWRkYTdkZjhjYTBj
NmExMWZjNDIuLjYwYmI2MzFkMzZkNTE0OGY0Mjg0ODU2MWZlNTljZTU1MTM5YjRlYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlHU3RyZWFtZXIuaApAQCAtMzQsMTAgKzM0LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbzsKK3N0cnVjdCBNZWRpYUNhcGFi
aWxpdGllc0VuY29kaW5nSW5mbzsKIHN0cnVjdCBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjsK
K3N0cnVjdCBNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbjsKIAogZXh0ZXJuIHZvaWQgY3JlYXRl
TWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFEZWNvZGluZ0Nv
bmZpZ3VyYXRpb24mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2Rp
bmdJbmZvJiYpPiYmKTsKLQorZXh0ZXJuIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGluZ0Nv
bmZpZ3VyYXRpb25HU3RyZWFtZXIoTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24mJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKE1lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvJiYpPiYmKTsKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IGEzMGM2MjY3NTFjNWY5NGZmMDU3ZmU0NzM0NDAxYWFmMWYwMGYyZmUuLmIwZWIxNTVh
NTI5YTljYzNiZDgxZmM0Y2ZlYmY2N2MzY2E1ZjQ1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yNjYzLDcgKzI2NjMsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZGlkRW5kKCkKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpCiB7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2Fu
bmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpzaW5nbGV0b24oKTsKLSAgICB0eXBlcyA9
IGdzdFJlZ2lzdHJ5U2Nhbm5lci5taW1lVHlwZVNldCgpOworICAgIHR5cGVzID0gZ3N0UmVnaXN0
cnlTY2FubmVyLm1pbWVUeXBlU2V0KEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJh
dGlvbjo6RGVjb2RpbmcpOwogfQogCiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9y
dFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0yNjg1LDcgKzI2ODUsNyBAQCBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBl
KGNvbnN0IE1lZGlhRQogCiAgICAgR1NUX0RFQlVHKCJDaGVja2luZyBtaW1lLXR5cGUgXCIlc1wi
IiwgcGFyYW1ldGVycy50eXBlLnJhdygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8mIGdzdFJl
Z2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7Ci0g
ICAgcmVzdWx0ID0gZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29udGVudFR5cGVTdXBwb3J0ZWQocGFy
YW1ldGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3Vw
cG9ydCk7CisgICAgcmVzdWx0ID0gZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29udGVudFR5cGVTdXBw
b3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywg
cGFyYW1ldGVycy50eXBlLCBwYXJhbWV0ZXJzLmNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJl
U3VwcG9ydCk7CiAKICAgICBhdXRvIGZpbmFsUmVzdWx0ID0gZXh0ZW5kZWRTdXBwb3J0c1R5cGUo
cGFyYW1ldGVycywgcmVzdWx0KTsKICAgICBHU1RfREVCVUcoIlN1cHBvcnRlZDogJXMiLCBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhmaW5hbFJlc3VsdCkudXRmOCgpLmRhdGEoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0Fw
cGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGI4ZjU4YTMzZTc1N2ViYTMzZjIwMmM5
YTZkMjY4ZTBmZjNmMjI1YjEuLjhjMTdiZjM0YmI3ZWM3OTljZThmYzM3NTkxMzY4NjVkYTRlNTE3
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC0zOTcsNyArMzk3LDcg
QEAgdm9pZCBBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11eGVyU3JjUGFkQ2FwcyhHc3RDYXBzKiBk
ZW11eGVyU3JjUGFkQ2FwcykKIAogICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0g
Y2Fwc01lZGlhVHlwZShtX2RlbXV4ZXJTcmNQYWRDYXBzLmdldCgpKTsKICAgICBhdXRvJiBnc3RS
ZWdpc3RyeVNjYW5uZXIgPSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigp
OwotICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQob3JpZ2luYWxN
ZWRpYVR5cGUpKSB7CisgICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRl
ZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmln
aW5hbE1lZGlhVHlwZSkpIHsKICAgICAgICAgICAgIG1fcHJlc2VudGF0aW9uU2l6ZSA9IFdlYkNv
cmU6OkZsb2F0U2l6ZSgpOwogICAgICAgICAgICAgbV9zdHJlYW1UeXBlID0gV2ViQ29yZTo6TWVk
aWFTb3VyY2VTdHJlYW1UeXBlR1N0cmVhbWVyOjpJbnZhbGlkOwogICAgIH0gZWxzZSBpZiAoZG9D
YXBzSGF2ZVR5cGUobV9kZW11eGVyU3JjUGFkQ2Fwcy5nZXQoKSwgR1NUX1ZJREVPX0NBUFNfVFlQ
RV9QUkVGSVgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggNWQ1OWNmOGRhZGYzMzc1YWUzMGFlNTRkZTZhYTMw
ZDUxMDM1YzYwZC4uYzQ0Y2EzOTY3YWIwZmYwNjkwZjBjZDJlZTYzMzRkY2M1ZDBkN2ZiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtNzExLDcgKzcxMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjp0cmFja0RldGVjdGVkKEFwcGVuZFBpcGVsaW5lJiBhcHBlbmRQaXBlbGluCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKQogewogICAgIGF1dG8m
IGdzdFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xl
dG9uKCk7Ci0gICAgdHlwZXMgPSBnc3RSZWdpc3RyeVNjYW5uZXIubWltZVR5cGVTZXQoKTsKKyAg
ICB0eXBlcyA9IGdzdFJlZ2lzdHJ5U2Nhbm5lci5taW1lVHlwZVNldChHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nKTsKIH0KIAogTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtNzMxLDcg
KzczMSw3IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkCiAKICAgICBHU1RfREVCVUcoIkNoZWNr
aW5nIG1pbWUtdHlwZSBcIiVzXCIiLCBwYXJhbWV0ZXJzLnR5cGUucmF3KCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICByZXN1bHQgPSBnc3RSZWdpc3RyeVNjYW5uZXIuaXND
b250ZW50VHlwZVN1cHBvcnRlZChwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuY29udGVudFR5
cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KTsKKyAgICByZXN1bHQgPSBnc3RSZWdpc3RyeVNj
YW5uZXIuaXNDb250ZW50VHlwZVN1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNv
bmZpZ3VyYXRpb246OkRlY29kaW5nLCBwYXJhbWV0ZXJzLnR5cGUsIHBhcmFtZXRlcnMuY29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KTsKIAogICAgIGF1dG8gZmluYWxSZXN1bHQg
PSBleHRlbmRlZFN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCByZXN1bHQpOwogICAgIEdTVF9ERUJV
RygiU3VwcG9ydGVkOiAlcyIsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGZpbmFsUmVzdWx0
KS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeS5jcHAKaW5kZXggNDAzMDJlMjY4NTMyODgyYjRmYTViYWNhNTc2NWExZWE4
Y2E3NWIzZi4uOGZmYTZhOWNjNWRmOTQ5MDY0N2E1ZmU0OWQ2MjkyMjBkMDRmNjNkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgc3RhdGljIGNvbnN0IEZhY3RvcnlWZWN0b3ImIGZhY3RvcmllcygpCiAg
ICAgICAgIHsgJmNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EsIG51
bGxwdHIgfSwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHsgJmNyZWF0ZU1l
ZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyLCBudWxscHRyIH0sCisgICAg
ICAgIHsgJmNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uR1N0cmVhbWVyLCAm
Y3JlYXRlTWVkaWFQbGF5ZXJFbmNvZGluZ0NvbmZpZ3VyYXRpb25HU3RyZWFtZXIgfSwKICNlbmRp
ZgogICAgIH0pKTsKICAgICByZXR1cm4gZmFjdG9yaWVzOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNmZTUwNmU5MjJlMmZj
OTYyZGMwN2IwNTc5NTljMTFjZWMyYjQ4MDcuLmNhNjY1YjkxOTZhODQzZmRjMjA3YTA4ZTBlZDkw
NjE5MzIxYjU5MDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMC0xNSAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRW5j
b2RlciBwcm9iaW5nIHN1cHBvcnQgZm9yIHRoZSByZWdpc3RyeSBzY2FubmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3NTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dsaWIvbWVk
aWEvbWVkaWFjYXBhYmlsaXRpZXMtdHlwZXMtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21lZGlhY2FwYWJp
bGl0aWVzLXR5cGVzLWV4cGVjdGVkLnR4dC4KKwogMjAyMC0xMC0xNSAgRGllZ28gUGlubyBHYXJj
aWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJldmlld2VkIHRlc3Qg
Z2FyZGVuaW5nLiBVcGRhdGUgYmFzZWxpbmUgb2YgZmFzdC9jc3Mvd29yZC1zcGFjZS1leHRyYS5o
dG1sIGFmdGVyIHIyNjgyMDIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGli
L21lZGlhL21lZGlhY2FwYWJpbGl0aWVzLXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2dsaWIvbWVkaWEvbWVkaWFjYXBhYmlsaXRpZXMtdHlwZXMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg4YzhjYTJjYmM1MWJhODJjN2MyZTAwODY2NDIwNTIwZWY5MjliZmQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL21lZGlhL21lZGlhY2Fw
YWJpbGl0aWVzLXR5cGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg3IEBACitUZXN0IGJhc2lj
IGRpY3Rpb25hcnkgYW5kIGVudW0gdHlwZXMgb2YgTWVkaWEgQ2FwYWJpbGl0aWVzIEFQSQorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyAoKSA9PiB7CisgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUn
IH0pOworICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
CitQQVNTICgpID0+IHsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGll
cy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnbWVkaWEtc291cmNlJyB9KTsKKyAgICB9IHJlamVjdGVk
IHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyAoKSA9PiB7CisgICAg
ICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlw
ZTogJ2ZpbGUnLCBhdWRpbzogeyB9IH0pOworICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBU
eXBlRXJyb3I6IE1lbWJlciBBdWRpb0NvbmZpZ3VyYXRpb24uY29udGVudFR5cGUgaXMgcmVxdWly
ZWQgYW5kIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgRE9NU3RyaW5nLgorUEFTUyAoKSA9PiB7Cisg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsg
dHlwZTogJ2ZpbGUnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJh
dmMxIicgfSB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBUeXBl
IGVycm9yLgorUEFTUyAoKSA9PiB7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBh
YmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyB9IH0pOworICAg
IH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IE1lbWJlciBWaWRlb0NvbmZpZ3Vy
YXRpb24uYml0cmF0ZSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB1bnNp
Z25lZCBsb25nIGxvbmcuCitQQVNTICgpID0+IHsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5t
ZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNv
bnRlbnRUeXBlOiAnYXVkaW8vbXAzJywgd2lkdGg6IDY0MCwgaGVpZ2h0OiA0ODAsIGJpdHJhdGU6
IDEwMDAsIGZyYW1lcmF0ZTogMjQgfSB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGgg
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyAoKSA9PiB7CisgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRl
bzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDogNDgw
LCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJhdGU6IDI0IH0gfSk7CisgICAgfSByZWplY3RlZCBwcm9t
aXNlICB3aXRoIFR5cGVFcnJvcjogTWVtYmVyIFZpZGVvQ29uZmlndXJhdGlvbi53aWR0aCBpcyBy
ZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB1bnNpZ25lZCBsb25nLgorUEFTUyAo
KSA9PiB7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2Rp
bmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsg
Y29kZWNzPSJhdmMxLHZwOSInLCB3aWR0aDo2NDAsIGhlaWdodDogNDgwLCBiaXRyYXRlOiAxMDAw
LCBmcmFtZXJhdGU6IDI0IH0gfSk7CisgICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVF
cnJvcjogVHlwZSBlcnJvci4KK1BBU1MgKCkgPT4geworICAgICAgICByZXR1cm4gbmF2aWdhdG9y
Lm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsg
Y29udGVudFR5cGU6ICd2aWRlby9tcDQnLCB3aWR0aDo2NDAsIGhlaWdodDogNDgwLCBiaXRyYXRl
OiAxMDAwLCBmcmFtZXJhdGU6IDI0IH0gfSk7CisgICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRo
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgKCkgPT4geworICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlk
ZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCB3aWR0aDogNjQw
LCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVyYXRlOiAwIH0gfSk7CisgICAgfSBy
ZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgKCkgPT4g
eworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5m
byh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVj
cz0iYXZjMSInLCB3aWR0aDogNjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVy
YXRlOiAiMjQvYSIgfSB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9y
OiBUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZS4KK1BBU1MgKCkgPT4geworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6
ICdmaWxlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSIn
LCB3aWR0aDogNjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVyYXRlOiAiMjQv
MCIgfSB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBUaGUgcHJv
dmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZS4KK1BBU1MgKCkgPT4geworICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdpbnZhbGlk
JywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCB3aWR0
aDogNjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVyYXRlOiAyNCB9IH0pOwor
ICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNT
ICgpID0+IHsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNv
ZGluZ0luZm8oeyB0eXBlOiAncmVjb3JkJyB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdp
dGggVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyAoKSA9PiB7CisgICAgICAgIHJldHVybiBu
YXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcs
IGF1ZGlvOiB7IH0gfSk7CisgICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjog
TWVtYmVyIEF1ZGlvQ29uZmlndXJhdGlvbi5jb250ZW50VHlwZSBpcyByZXF1aXJlZCBhbmQgbXVz
dCBiZSBhbiBpbnN0YW5jZSBvZiBET01TdHJpbmcuCitQQVNTICgpID0+IHsKKyAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAncmVj
b3JkJywgYXVkaW86IHsgfSB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGggVHlwZUVy
cm9yOiBNZW1iZXIgQXVkaW9Db25maWd1cmF0aW9uLmNvbnRlbnRUeXBlIGlzIHJlcXVpcmVkIGFu
ZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIERPTVN0cmluZy4KK1BBU1MgKCkgPT4geworICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6
ICdyZWNvcmQnLCBhdWRpbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMx
IicgfSB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorUEFTUyAoKSA9PiB7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmls
aXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcsIHZpZGVvOiB7IH0gfSk7CisgICAg
fSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogTWVtYmVyIFZpZGVvQ29uZmlndXJh
dGlvbi5iaXRyYXRlIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHVuc2ln
bmVkIGxvbmcgbG9uZy4KK1BBU1MgKCkgPT4geworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1l
ZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBj
b250ZW50VHlwZTogJ2F1ZGlvL21wMycsIHdpZHRoOiA2NDAsIGhlaWdodDogNDgwLCBiaXRyYXRl
OiAxMDAwLCBmcmFtZXJhdGU6IDI0IH0gfSk7CisgICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRo
IFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgKCkgPT4geworICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2
aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIGhlaWdodDog
NDgwLCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJhdGU6IDI0IH0gfSk7CisgICAgfSByZWplY3RlZCBw
cm9taXNlICB3aXRoIFR5cGVFcnJvcjogTWVtYmVyIFZpZGVvQ29uZmlndXJhdGlvbi53aWR0aCBp
cyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB1bnNpZ25lZCBsb25nLgorUEFT
UyAoKSA9PiB7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVj
b2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8v
bXA0OyBjb2RlY3M9ImF2YzEsdnA5IicsIHdpZHRoOjY0MCwgaGVpZ2h0OiA0ODAsIGJpdHJhdGU6
IDEwMDAsIGZyYW1lcmF0ZTogMjQgfSB9KTsKKyAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGgg
VHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyAoKSA9PiB7CisgICAgICAgIHJldHVybiBuYXZp
Z2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcsIHZp
ZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0Jywgd2lkdGg6NjQwLCBoZWlnaHQ6IDQ4MCwg
Yml0cmF0ZTogMTAwMCwgZnJhbWVyYXRlOiAyNCB9IH0pOworICAgIH0gcmVqZWN0ZWQgcHJvbWlz
ZSAgd2l0aCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTICgpID0+IHsKKyAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAncmVj
b3JkJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCB3
aWR0aDogNjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVyYXRlOiAwIH0gfSk7
CisgICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BB
U1MgKCkgPT4geworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRl
Y29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVv
L21wNDsgY29kZWNzPSJhdmMxIicsIHdpZHRoOiA2NDAsIGhlaWdodDogNDgwLCBiaXRyYXRlOiAx
MDAwLCBmcmFtZXJhdGU6ICIyNC9hIiB9IH0pOworICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0
aCBUeXBlRXJyb3I6IFRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlLgorUEFTUyAoKSA9
PiB7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJ
bmZvKHsgdHlwZTogJ3JlY29yZCcsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBj
b2RlY3M9ImF2YzEiJywgd2lkdGg6IDY0MCwgaGVpZ2h0OiA0ODAsIGJpdHJhdGU6IDEwMDAsIGZy
YW1lcmF0ZTogIjI0Ly0xIiB9IH0pOworICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBl
RXJyb3I6IFRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlLgorUEFTUyAoKSA9PiB7Cisg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsg
dHlwZTogJ2ludmFsaWQnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNz
PSJhdmMxIicsIHdpZHRoOiA2NDAsIGhlaWdodDogNDgwLCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJh
dGU6IDI0IH0gfSk7CisgICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEvbWVkaWFjYXBh
YmlsaXRpZXMvbWVkaWFjYXBhYmlsaXRpZXMtdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL21lZGlhL21lZGlhY2FwYWJpbGl0aWVzL21lZGlhY2FwYWJpbGl0aWVz
LXR5cGVzLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg2NmYw
Mzg3YThmZmVhNDcyN2ZhN2ZiNDc0ZjQ5ZjRiYjZmOTkwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvbWVkaWEv
bWVkaWFjYXBhYmlsaXRpZXMvbWVkaWFjYXBhYmlsaXRpZXMtdHlwZXMtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotVGVzdCBiYXNpYyBkaWN0aW9uYXJ5IGFuZCBl
bnVtIHR5cGVzIG9mIE1lZGlhIENhcGFiaWxpdGllcyBBUEkKLQotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgotCi0KLVBBU1MgKCkgPT4gewotICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlh
Q2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJyB9KTsKLSAgICB9IHJlamVj
dGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyAoKSA9PiB7Ci0g
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsg
dHlwZTogJ21lZGlhLXNvdXJjZScgfSk7Ci0gICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgKCkgPT4gewotICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVkaW86
IHsgfSB9KTsKLSAgICB9IHJlamVjdGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBNZW1iZXIg
QXVkaW9Db25maWd1cmF0aW9uLmNvbnRlbnRUeXBlIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIERPTVN0cmluZy4KLVBBU1MgKCkgPT4gewotICAgICAgICByZXR1cm4gbmF2
aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgYXVk
aW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInIH0gfSk7Ci0gICAg
fSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgKCkg
PT4gewotICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5n
SW5mbyh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsgfSB9KTsKLSAgICB9IHJlamVjdGVkIHByb21p
c2UgIHdpdGggVHlwZUVycm9yOiBNZW1iZXIgVmlkZW9Db25maWd1cmF0aW9uLmJpdHJhdGUgaXMg
cmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdW5zaWduZWQgbG9uZyBsb25nLgot
UEFTUyAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMu
ZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ZpbGUnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ2F1ZGlv
L21wMycsIHdpZHRoOiA2NDAsIGhlaWdodDogNDgwLCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJhdGU6
IDI0IH0gfSk7Ci0gICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1MgKCkgPT4gewotICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJp
bGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdmaWxlJywgdmlkZW86IHsgY29udGVudFR5cGU6
ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSInLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwg
ZnJhbWVyYXRlOiAyNCB9IH0pOwotICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJy
b3I6IE1lbWJlciBWaWRlb0NvbmZpZ3VyYXRpb24ud2lkdGggaXMgcmVxdWlyZWQgYW5kIG11c3Qg
YmUgYW4gaW5zdGFuY2Ugb2YgdW5zaWduZWQgbG9uZy4KLVBBU1MgKCkgPT4gewotICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdm
aWxlJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMSx2cDki
Jywgd2lkdGg6NjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVyYXRlOiAyNCB9
IH0pOwotICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IFR5cGUgZXJyb3Iu
Ci1QQVNTICgpID0+IHsKLSAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGll
cy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlk
ZW8vbXA0Jywgd2lkdGg6NjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVyYXRl
OiAyNCB9IH0pOwotICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTICgpID0+IHsKLSAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFi
aWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7IGNvbnRlbnRUeXBl
OiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgd2lkdGg6IDY0MCwgaGVpZ2h0OiA0ODAsIGJp
dHJhdGU6IDEwMDAsIGZyYW1lcmF0ZTogMCB9IH0pOwotICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAg
d2l0aCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTICgpID0+IHsKLSAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScs
IHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgd2lkdGg6
IDY0MCwgaGVpZ2h0OiA0ODAsIGJpdHJhdGU6IDEwMDAsIGZyYW1lcmF0ZTogIjI0L2EiIH0gfSk7
Ci0gICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVGhlIHByb3ZpZGVkIHZh
bHVlIGlzIG5vbi1maW5pdGUuCi1QQVNTICgpID0+IHsKLSAgICAgICAgcmV0dXJuIG5hdmlnYXRv
ci5tZWRpYUNhcGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnZmlsZScsIHZpZGVvOiB7
IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgd2lkdGg6IDY0MCwgaGVp
Z2h0OiA0ODAsIGJpdHJhdGU6IDEwMDAsIGZyYW1lcmF0ZTogIjI0LzAiIH0gfSk7Ci0gICAgfSBy
ZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5v
bi1maW5pdGUuCi1QQVNTICgpID0+IHsKLSAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYUNh
cGFiaWxpdGllcy5kZWNvZGluZ0luZm8oeyB0eXBlOiAnaW52YWxpZCcsIHZpZGVvOiB7IGNvbnRl
bnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgd2lkdGg6IDY0MCwgaGVpZ2h0OiA0
ODAsIGJpdHJhdGU6IDEwMDAsIGZyYW1lcmF0ZTogMjQgfSB9KTsKLSAgICB9IHJlamVjdGVkIHBy
b21pc2UgIHdpdGggVHlwZUVycm9yOiBUeXBlIGVycm9yLgotRkFJTCAoKSA9PiB7Ci0gICAgICAg
IHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5jb2RpbmdJbmZvKHsgdHlwZTog
J3JlY29yZCcgfSk7Ci0gICAgfSBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbi4gVGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5m
byBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZW5j
b2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcgfSknLCAnbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0
aWVzLmVuY29kaW5nSW5mbycgaXMgdW5kZWZpbmVkKS4KLUZBSUwgKCkgPT4gewotICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICdy
ZWNvcmQnLCBhdWRpbzogeyB9IH0pOwotICAgIH0gc2hvdWxkIG5vdCB0aHJvdyBleGNlcHRpb24u
IFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5l
bmNvZGluZ0luZm8gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbmF2aWdhdG9yLm1lZGlhQ2FwYWJp
bGl0aWVzLmVuY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCBhdWRpbzogeyB9IH0pJywgJ25h
dmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5lbmNvZGluZ0luZm8nIGlzIHVuZGVmaW5lZCkuCi1Q
QVNTICgpID0+IHsKLSAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5k
ZWNvZGluZ0luZm8oeyB0eXBlOiAncmVjb3JkJywgYXVkaW86IHsgfSB9KTsKLSAgICB9IHJlamVj
dGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBNZW1iZXIgQXVkaW9Db25maWd1cmF0aW9uLmNv
bnRlbnRUeXBlIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIERPTVN0cmlu
Zy4KLVBBU1MgKCkgPT4gewotICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0
aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCBhdWRpbzogeyBjb250ZW50VHlwZTog
J3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicgfSB9KTsKLSAgICB9IHJlamVjdGVkIHByb21pc2Ug
IHdpdGggVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyAoKSA9PiB7Ci0gICAgICAgIHJldHVy
biBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ3JlY29y
ZCcsIHZpZGVvOiB7IH0gfSk7Ci0gICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJv
cjogTWVtYmVyIFZpZGVvQ29uZmlndXJhdGlvbi5iaXRyYXRlIGlzIHJlcXVpcmVkIGFuZCBtdXN0
IGJlIGFuIGluc3RhbmNlIG9mIHVuc2lnbmVkIGxvbmcgbG9uZy4KLVBBU1MgKCkgPT4gewotICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5
cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ2F1ZGlvL21wMycsIHdpZHRoOiA2
NDAsIGhlaWdodDogNDgwLCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJhdGU6IDI0IH0gfSk7Ci0gICAg
fSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgKCkg
PT4gewotICAgICAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5n
SW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRlbzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsg
Y29kZWNzPSJhdmMxIicsIGhlaWdodDogNDgwLCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJhdGU6IDI0
IH0gfSk7Ci0gICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5cGVFcnJvcjogTWVtYmVyIFZp
ZGVvQ29uZmlndXJhdGlvbi53aWR0aCBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiBpbnN0YW5j
ZSBvZiB1bnNpZ25lZCBsb25nLgotUEFTUyAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0
b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcsIHZpZGVv
OiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEsdnA5IicsIHdpZHRoOjY0
MCwgaGVpZ2h0OiA0ODAsIGJpdHJhdGU6IDEwMDAsIGZyYW1lcmF0ZTogMjQgfSB9KTsKLSAgICB9
IHJlamVjdGVkIHByb21pc2UgIHdpdGggVHlwZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyAoKSA9
PiB7Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJ
bmZvKHsgdHlwZTogJ3JlY29yZCcsIHZpZGVvOiB7IGNvbnRlbnRUeXBlOiAndmlkZW8vbXA0Jywg
d2lkdGg6NjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTogMTAwMCwgZnJhbWVyYXRlOiAyNCB9IH0p
OwotICAgIH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1Q
QVNTICgpID0+IHsKLSAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5tZWRpYUNhcGFiaWxpdGllcy5k
ZWNvZGluZ0luZm8oeyB0eXBlOiAncmVjb3JkJywgdmlkZW86IHsgY29udGVudFR5cGU6ICd2aWRl
by9tcDQ7IGNvZGVjcz0iYXZjMSInLCB3aWR0aDogNjQwLCBoZWlnaHQ6IDQ4MCwgYml0cmF0ZTog
MTAwMCwgZnJhbWVyYXRlOiAwIH0gfSk7Ci0gICAgfSByZWplY3RlZCBwcm9taXNlICB3aXRoIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgKCkgPT4gewotICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLm1lZGlhQ2FwYWJpbGl0aWVzLmRlY29kaW5nSW5mbyh7IHR5cGU6ICdyZWNvcmQnLCB2aWRl
bzogeyBjb250ZW50VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIHdpZHRoOiA2NDAs
IGhlaWdodDogNDgwLCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJhdGU6ICIyNC9hIiB9IH0pOwotICAg
IH0gcmVqZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IFRoZSBwcm92aWRlZCB2YWx1ZSBp
cyBub24tZmluaXRlLgotUEFTUyAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVk
aWFDYXBhYmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ3JlY29yZCcsIHZpZGVvOiB7IGNv
bnRlbnRUeXBlOiAndmlkZW8vbXA0OyBjb2RlY3M9ImF2YzEiJywgd2lkdGg6IDY0MCwgaGVpZ2h0
OiA0ODAsIGJpdHJhdGU6IDEwMDAsIGZyYW1lcmF0ZTogIjI0Ly0xIiB9IH0pOwotICAgIH0gcmVq
ZWN0ZWQgcHJvbWlzZSAgd2l0aCBUeXBlRXJyb3I6IFRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub24t
ZmluaXRlLgotUEFTUyAoKSA9PiB7Ci0gICAgICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFDYXBh
YmlsaXRpZXMuZGVjb2RpbmdJbmZvKHsgdHlwZTogJ2ludmFsaWQnLCB2aWRlbzogeyBjb250ZW50
VHlwZTogJ3ZpZGVvL21wNDsgY29kZWNzPSJhdmMxIicsIHdpZHRoOiA2NDAsIGhlaWdodDogNDgw
LCBiaXRyYXRlOiAxMDAwLCBmcmFtZXJhdGU6IDI0IH0gfSk7Ci0gICAgfSByZWplY3RlZCBwcm9t
aXNlICB3aXRoIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCg==
</data>
<flag name="review"
          id="427619"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>