<?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>171654</bug_id>
          
          <creation_ts>2017-05-04 05:54:03 -0700</creation_ts>
          <short_desc>REGRESSION(r216172): FTBFS for iOS due to missing WebPageProxy::stopMediaCapture() implementation. (Requested by ddkilzer on #webkit).</short_desc>
          <delta_ts>2017-05-04 06:19:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>171292</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1304589</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-04 05:54:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/216172 broke the build:
FTBFS for iOS due to missing WebPageProxy::stopMediaCapture() implementation. (Requested by ddkilzer on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304590</commentid>
    <comment_count>1</comment_count>
      <attachid>309039</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-04 05:54:17 -0700</bug_when>
    <thetext>Created attachment 309039
ROLLOUT of r216172

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304591</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-05-04 05:55:09 -0700</bug_when>
    <thetext>FTBFS == Failed To Build From Source</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304592</commentid>
    <comment_count>3</comment_count>
      <attachid>309039</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-04 05:56:58 -0700</bug_when>
    <thetext>Comment on attachment 309039
ROLLOUT of r216172

Clearing flags on attachment: 309039

Committed r216183: &lt;http://trac.webkit.org/changeset/216183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304593</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-04 05:56:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304596</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2017-05-04 06:19:28 -0700</bug_when>
    <thetext>Here&apos;s the error output (&lt;https://webkit-queues.webkit.org/results/3669374&gt;):

CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release-iphoneos/WebKit.build/Objects-normal/armv7s/UserMediaProcessManager.o UIProcess/UserMediaProcessManager.cpp normal armv7s c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Volumes/Data/EWS/WebKit/Source/WebKit2
    export LANG=en_US.US-ASCII
    export PATH=&quot;/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin&quot;
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch armv7s -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++1y -stdlib=libc++ -gmodules -Wno-trigraphs -fno-exceptions -fno-rtti -fpascal-strings -Os -fno-common -Werror -Wno-missing-field-initializers -Wmissing-prototypes -Wunreachable-code -Wnon-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wsign-compare -Wno-shorten-64-to-32 -Wnewline-eof -Wno-c++11-extensions -DNDEBUG -DENABLE_3D_TRANSFORMS -DENABLE_ACCELERATED_OVERFLOW_SCROLLING -DENABLE_APPLE_PAY -DENABLE_ATTACHMENT_ELEMENT -DENABLE_AVF_CAPTIONS -DENABLE_CACHE_PARTITIONING -DENABLE_CANVAS_PATH -DENABLE_CHANNEL_MESSAGING -DENABLE_CONTENT_FILTERING -DENABLE_CSS_ANIMATIONS_LEVEL_2 -DENABLE_CSS_BOX_DECORATION_BREAK -DENABLE_CSS_COMPOSITING -DENABLE_CSS_REGIONS -DENABLE_CSS_SCROLL_SNAP -DENABLE_CSS_SELECTORS_LEVEL4 -DENABLE_CSS_TRAILING_WORD -DENABLE_CURSOR_VISIBILITY -DENABLE_DATACUE_VALUE -DENABLE_DEVICE_ORIENTATION -DENABLE_FETCH_API -DENABLE_FILTERS_LEVEL_2 -DENABLE_FTL_JIT -DENABLE_GAMEPAD -DENABLE_GEOLOCATION -DENABLE_INDEXED_DATABASE_IN_WORKERS -DENABLE_INDEXED_DATABASE -DENABLE_INPUT_TYPE_DATE -DENABLE_INPUT_TYPE_DATETIMELOCAL -DENABLE_INPUT_TYPE_MONTH -DENABLE_INPUT_TYPE_TIME -DENABLE_INPUT_TYPE_WEEK -DENABLE_INTERSECTION_OBSERVER -DENABLE_INTL -DENABLE_KEYBOARD_KEY_ATTRIBUTE -DENABLE_KEYBOARD_CODE_ATTRIBUTE -DENABLE_LEGACY_CSS_VENDOR_PREFIXES -DENABLE_LEGACY_VENDOR_PREFIXES -DENABLE_LETTERPRESS -DENABLE_MATHML -DENABLE_MEDIA_CAPTURE -DENABLE_MEDIA_CONTROLS_SCRIPT -DENABLE_MEDIA_STREAM -DENABLE_METER_ELEMENT -DENABLE_NAVIGATOR_HWCONCURRENCY -DENABLE_NOSNIFF -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESOURCE_USAGE -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SUBTLE_CRYPTO -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USERSELECT_ALL -DENABLE_VARIATION_FONTS -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_VIDEO -DENABLE_WEB_ANIMATIONS -DENABLE_WEB_AUDIO -DENABLE_WEB_SOCKETS -DENABLE_WEB_TIMING -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DHAVE_CORE_PREDICTION -DFRAMEWORK_NAME=WebKit -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -miphoneos-version-min=10.2 -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release-iphoneos/WebKit.build/WebKit.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/WebCore.framework/PrivateHeaders/ForwardingHeaders -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/WebCore.framework/PrivateHeaders/icu -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/DerivedSources/WebKit2 -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos/usr/local/include/WebKitAdditions -I/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/local/include/WebKitAdditions -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release-iphoneos/WebKit.build/DerivedSources/armv7s -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release-iphoneos/WebKit.build/DerivedSources -Wall -Wextra -Wchar-subscripts -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release-iphoneos -F/Volumes/Data/EWS/WebKit/Source/WebKit2/../../WebKitLibraries/WebKitPrivateFrameworkStubs/iOS/10 -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/System/Library/Frameworks/Carbon.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/System/Library/Frameworks/Quartz.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/System/Library/PrivateFrameworks -isystem /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/WebKit2Prefix-hbnfwgqeotoxsbfhsyarwepmlrfm/WebKit2Prefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release-iphoneos/WebKit.build/Objects-normal/armv7s/UserMediaProcessManager.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release-iphoneos/WebKit.build/Objects-normal/armv7s/UserMediaProcessManager.dia -c /Volumes/Data/EWS/WebKit/Source/WebKit2/UIProcess/UserMediaProcessManager.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit2.build/Release-iphoneos/WebKit.build/Objects-normal/armv7s/UserMediaProcessManager.o
/Volumes/Data/EWS/WebKit/Source/WebKit2/UIProcess/UserMediaProcessManager.cpp:120:33: error: no member named &apos;stopMediaCapture&apos; in &apos;WebKit::WebPageProxy&apos;
                manager-&gt;page().stopMediaCapture();
                ~~~~~~~~~~~~~~~ ^
1 error generated.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309039</attachid>
            <date>2017-05-04 05:54:17 -0700</date>
            <delta_ts>2017-05-04 05:56:58 -0700</delta_ts>
            <desc>ROLLOUT of r216172</desc>
            <filename>bug-171654-20170504085416.patch</filename>
            <type>text/plain</type>
            <size>46084</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIyZjEwZWIzMGE3MTMw
NWZlY2IzZTYwMmU0ZjNkZWY4ZjkwNDlkNy4uMTQ5NTA1YjgyYTM4NWE2N2Q0ZDZmMzUzZGI1MWYy
ZDhmMDliOGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA1LTA0ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjE2MTcyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcxNjU0CisKKyAgICAgICAgRlRCRlMgZm9yIGlPUyBkdWUgdG8gbWlz
c2luZyBXZWJQYWdlUHJveHk6OnN0b3BNZWRpYUNhcHR1cmUoKQorICAgICAgICBpbXBsZW1lbnRh
dGlvbi4gKFJlcXVlc3RlZCBieSBkZGtpbHplciBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZl
cnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIltNZWRpYVN0cmVhbV0gQWxsb3cgaG9zdCBhcHBs
aWNhdGlvbiB0byBlbmFibGUvZGlzYWJsZSBtZWRpYQorICAgICAgICBjYXB0dXJlIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMjkyCisgICAgICAg
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxNjE3MgorCiAyMDE3LTA1LTAzICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIyMTU2ODYpOiBJbmNyZW1lbnRhbCByZWFkcyBmcm9tIFNoYXJlZEJ1ZmZlciBhcmUg
d3JvbmcgYWZ0ZXIgcjIxNTY4NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDVmYjBlMDRhODA5NDA3Y2UyOTIyYmI3
NzAwY2M3YzRiYmM2ZTk1NzYuLjYzYzI3ODQ0MmU2YmNhNmJkOGUxM2EwN2VmOGVjZmYyYmY4YzVh
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNS0wNCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIxNjE3Mi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MTY1NAorCisgICAgICAgIEZUQkZTIGZvciBpT1MgZHVlIHRvIG1pc3NpbmcgV2Vi
UGFnZVByb3h5OjpzdG9wTWVkaWFDYXB0dXJlKCkKKyAgICAgICAgaW1wbGVtZW50YXRpb24uIChS
ZXF1ZXN0ZWQgYnkgZGRraWx6ZXIgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hh
bmdlc2V0OgorCisgICAgICAgICJbTWVkaWFTdHJlYW1dIEFsbG93IGhvc3QgYXBwbGljYXRpb24g
dG8gZW5hYmxlL2Rpc2FibGUgbWVkaWEKKyAgICAgICAgY2FwdHVyZSIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTI5MgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMTYxNzIKKwogMjAxNy0wNS0wNCAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1RocmVhZGVkIENv
bXBvc2l0b3JdIFNIT1VMRCBORVZFUiBCRSBSRUFDSEVEIGluIFdlYktpdDo6Q29tcG9zaXRpbmdS
dW5Mb29wOjp1cGRhdGVDb21wbGV0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggYjFlZTMzNWFiNWYyZGI1NDRiY2Y3YzRl
NTRiMDQzYTZkYjZjZmEzYS4uNjA0Y2EzYTlkYmNhYjMzMmIxMzg5MWI4MmQyNzFkNmE1M2RmMGQz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAKQEAgLTMxNCwxMiArMzE0LDYgQEAgdm9pZCBNZWRpYVN0cmVhbTo6c3RvcFByb2R1
Y2luZ0RhdGEoKQogICAgIG1fcHJpdmF0ZS0+c3RvcFByb2R1Y2luZ0RhdGEoKTsKIH0KIAotdm9p
ZCBNZWRpYVN0cmVhbTo6ZW5kU3RyZWFtKCkKLXsKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90
cmFja1NldC52YWx1ZXMoKSkKLSAgICAgICAgdHJhY2stPnN0b3BUcmFjayhNZWRpYVN0cmVhbVRy
YWNrOjpTdG9wTW9kZTo6UG9zdEV2ZW50KTsKLX0KLQogdm9pZCBNZWRpYVN0cmVhbTo6cGFnZU11
dGVkU3RhdGVEaWRDaGFuZ2UoKQogewogICAgIGlmICghbV9pc0FjdGl2ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCA4MmQ2NDhi
Yjc2NmYyYWI3MzVkNTA3MTM0Nzg1NmI4NjMxMjVhYmI2Li5mNmUwNGEyMzU0YWQzN2NlZGViYmFm
MDE4OTJjODc1ZTNjZjFlYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC05MSw4ICs5MSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKTsKIAot
ICAgIHZvaWQgZW5kU3RyZWFtKCk7Ci0KICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
TWVkaWFTdHJlYW1FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpA
QCAtMTA4LDggKzEwNiw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkVHJhY2tGcm9tUGxhdGZv
cm0oUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYpOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3Q7Ci0KIHByb3RlY3RlZDoKICAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYpOwogICAgIE1lZGlhU3RyZWFtKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8TWVkaWFTdHJlYW1Qcml2YXRlPiYmKTsKQEAgLTE2
Miw2ICsxNTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCk7CiAgICAg
dm9pZCBzdGF0dXNEaWRDaGFuZ2UoKTsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
OworCiAgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0cmFja1ZlY3RvckZvclR5cGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VHlwZSkgY29uc3Q7CiAKICAgICBSZWY8TWVkaWFTdHJlYW1Qcml2YXRl
PiBtX3ByaXZhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCA4ZTdjZWM5NjYwNWUyODFmMDg1
ZDc1ZTU3OTJhOGEyNjhhZWI2Y2JkLi43MmUxZDk0OGQxYjkzYjQ1OGU1Mjk1ZjQ3YWFjMjMyZmNm
NjUyOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKQEAgLTYyLDYgKzYyLDEwIEBAIFVSTFJlZ2lz
dHJhYmxlKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgU3RyaW5nJiB1cmwpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbWVkaWFTdHJlYW1zLmdldCh1cmwpOwogfQogCitNZWRpYVN0cmVh
bVJlZ2lzdHJ5OjpNZWRpYVN0cmVhbVJlZ2lzdHJ5KCkKK3sKK30KKwogTWVkaWFTdHJlYW0qIE1l
ZGlhU3RyZWFtUmVnaXN0cnk6Omxvb2tVcChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW0qPihsb29rdXAodXJsLnN0cmluZygpKSk7CkBA
IC04MCwxNiArODQsMjEgQEAgdm9pZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5OjpyZWdpc3RlclN0cmVh
bShNZWRpYVN0cmVhbSYgc3RyZWFtKQogCiB2b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnVucmVn
aXN0ZXJTdHJlYW0oTWVkaWFTdHJlYW0mIHN0cmVhbSkKIHsKLSAgICBhdXRvJiBhbGxTdHJlYW1z
ID0gbWVkaWFTdHJlYW1zKCk7CisgICAgVmVjdG9yPE1lZGlhU3RyZWFtKj4mIGFsbFN0cmVhbXMg
PSBtZWRpYVN0cmVhbXMoKTsKICAgICBzaXplX3QgcG9zID0gYWxsU3RyZWFtcy5maW5kKCZzdHJl
YW0pOwogICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCiAgICAgICAgIGFsbFN0cmVhbXMucmVtb3Zl
KHBvcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6Zm9yRWFjaChzdGQ6OmZ1bmN0
aW9uPHZvaWQoTWVkaWFTdHJlYW0mKT4gY2FsbGJhY2spIGNvbnN0CitNZWRpYVN0cmVhbSogTWVk
aWFTdHJlYW1SZWdpc3RyeTo6bG9va1VwKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYgcHJpdmF0
ZVN0cmVhbSkgY29uc3QKIHsKLSAgICBmb3IgKGF1dG8mIHN0cmVhbSA6IG1lZGlhU3RyZWFtcygp
KQotICAgICAgICBjYWxsYmFjaygqc3RyZWFtKTsKKyAgICBWZWN0b3I8TWVkaWFTdHJlYW0qPiYg
YWxsU3RyZWFtcyA9IG1lZGlhU3RyZWFtcygpOworICAgIGZvciAoYXV0byYgc3RyZWFtIDogYWxs
U3RyZWFtcykgeworICAgICAgICBpZiAoJnN0cmVhbS0+cHJpdmF0ZVN0cmVhbSgpID09ICZwcml2
YXRlU3RyZWFtKQorICAgICAgICAgICAgcmV0dXJuIHN0cmVhbTsKKyAgICB9CisKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaApp
bmRleCAwMzBiY2U5YWRiNjZjMTcyMjY2ZTFiMjQ4NTdkNDliYTkyMDZmZmRiLi43ZTIzYTFlMmUy
MjlkOWM4MWQ3ODI0MmY2MDZmMjJiNTM2MGVkMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaApAQCAtNTQs
MTEgKzU0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJTdHJlYW0oTWVkaWFTdHJl
YW0mKTsKIAogICAgIE1lZGlhU3RyZWFtKiBsb29rVXAoY29uc3QgVVJMJikgY29uc3Q7Ci0KLSAg
ICB2b2lkIGZvckVhY2goc3RkOjpmdW5jdGlvbjx2b2lkKE1lZGlhU3RyZWFtJik+KSBjb25zdDsK
KyAgICBNZWRpYVN0cmVhbSogbG9va1VwKGNvbnN0IE1lZGlhU3RyZWFtUHJpdmF0ZSYpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CisgICAg
TWVkaWFTdHJlYW1SZWdpc3RyeSgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFT
dHJlYW0+PiBtX21lZGlhU3RyZWFtczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDZhNmJhNTE1
YWU3ZWM0ODQzM2I0MTQzZDdlYmZhOTkyM2EyMmVjNGQuLmMwZWZlYTFhZDRlOWRlMDRjYWYxNmMx
MWQwMjJkY2Y5MjY3N2JjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpCiAgICAgcmV0dXJu
IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3By
aXZhdGUtPmNsb25lKCkpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BUcmFjayhT
dG9wTW9kZSBtb2RlKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wVHJhY2soKQogewogICAg
IC8vIE5PVEU6IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSAic3RvcCIgbWV0aG9kIGlz
IGNhbGxlZCBmcm9tIEpTLCB1c2luZyB0aGUgIkltcGxlbWVudGVkQXMiIElETCBhdHRyaWJ1dGUu
CiAgICAgLy8gVGhpcyBpcyBkb25lIGJlY2F1c2UgQWN0aXZlRE9NT2JqZWN0IHJlcXVpcmVzIGEg
InN0b3AiIG1ldGhvZC4KQEAgLTEyMSwxMyArMTIxLDggQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNr
OjpzdG9wVHJhY2soU3RvcE1vZGUgbW9kZSkKICAgICBpZiAoZW5kZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgLy8gQW4gJ2VuZGVkJyBldmVudCBpcyBub3QgcG9zdGVkIGlmIG1fZW5kZWQg
aXMgdHJ1ZSB3aGVuIHRyYWNrRW5kZWQgaXMgY2FsbGVkLCBzbyBzZXQgaXQgbm93IGlmIHdlIGFy
ZQotICAgIC8vIG5vdCBzdXBwb3NlZCB0byBwb3N0IHRoZSBldmVudC4KLSAgICBpZiAobW9kZSA9
PSBTdG9wTW9kZTo6U2lsZW50bHkpCi0gICAgICAgIG1fZW5kZWQgPSB0cnVlOwotCi0gICAgbV9w
cml2YXRlLT5lbmRUcmFjaygpOwogICAgIG1fZW5kZWQgPSB0cnVlOworICAgIG1fcHJpdmF0ZS0+
ZW5kVHJhY2soKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFjazo6VHJhY2tTZXR0aW5ncyBNZWRpYVN0
cmVhbVRyYWNrOjpnZXRTZXR0aW5ncygpIGNvbnN0CkBAIC0zMDgsNyArMzAzLDcgQEAgdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjp0cmFja0VuZGVkKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikKICAg
ICAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tNdXRlZENoYW5nZWQoTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmKQogewotICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFj
dGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkgfHwgbV9lbmRlZCkKKyAgICBpZiAoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbXV0ZWQoKSA/IGV2ZW50
TmFtZXMoKS5tdXRlRXZlbnQgOiBldmVudE5hbWVzKCkudW5tdXRlRXZlbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmlu
ZGV4IDNiN2ViZjk1Mzc1M2EzNTRmYWY0ZTk3NjVkMjdhYWM4N2MxMjFmODkuLjRiMjEyZGUzMGQ2
ZWYyNWY3NDcxYTAwZTg4MmNiNjQzMWNkMWFlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC03MSw5ICs3MSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGVuZGVkKCkgY29uc3Q7CiAKICAgICBSZWY8TWVkaWFTdHJl
YW1UcmFjaz4gY2xvbmUoKTsKLQotICAgIGVudW0gY2xhc3MgU3RvcE1vZGUgeyBTaWxlbnRseSwg
UG9zdEV2ZW50IH07Ci0gICAgdm9pZCBzdG9wVHJhY2soU3RvcE1vZGUgPSBTdG9wTW9kZTo6U2ls
ZW50bHkpOworICAgIHZvaWQgc3RvcFRyYWNrKCk7CiAKICAgICBib29sIGlzQ2FwdHVyZVRyYWNr
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ5Y2UwMzM1MjBjMTg1ODky
MDllZjI1ZmYzMWY1MGI1MjhjMzk2ODAuLjBmMTRjMjhmMTRiMDAwODZhODBlZDIzMTVkMmM5YTk4
NTNlMDE1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjcxLDExICsyNzEsNiBAQAog
I2luY2x1ZGUgIlhTTFRQcm9jZXNzb3IuaCIKICNlbmRpZgogCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLSNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtUmVn
aXN0cnkuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNl
IFVuaWNvZGU7CiAKQEAgLTY5NzcsMTQgKzY5NzIsNCBAQCB2b2lkIERvY3VtZW50OjpvcmllbnRh
dGlvbkNoYW5nZWQoaW50IG9yaWVudGF0aW9uKQogICAgIG1fb3JpZW50YXRpb25Ob3RpZmllci5v
cmllbnRhdGlvbkNoYW5nZWQob3JpZW50YXRpb24pOwogfQogCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLXZvaWQgRG9jdW1lbnQ6OnN0b3BNZWRpYUNhcHR1cmUoKQotewotICAgIE1lZGlhU3Ry
ZWFtUmVnaXN0cnk6OnNoYXJlZCgpLmZvckVhY2goW3RoaXNdKE1lZGlhU3RyZWFtJiBzdHJlYW0p
IHsKLSAgICAgICAgaWYgKHN0cmVhbS5kb2N1bWVudCgpID09IHRoaXMpCi0gICAgICAgICAgICBz
dHJlYW0uZW5kU3RyZWFtKCk7Ci0gICAgfSk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkMmU1ZTVjMjUzODc2N2M5Zjc3NTViNzQ3
MWVlOTJjMWZlMDgwNGM5Li4zOThlNTM5ZDdiMDQzM2YyNDAyODg3MzJmYzBkN2EyYTBmMzgzYjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTI3Nyw3ICsxMjc3LDYgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzSGFkQWN0aXZlTWVkaWFTdHJlYW1UcmFjaygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
SGFkQWN0aXZlTWVkaWFTdHJlYW1UcmFjazsgfQogICAgIHZvaWQgc2V0RGV2aWNlSURIYXNoU2Fs
dChjb25zdCBTdHJpbmcmIHNhbHQpIHsgbV9pZEhhc2hTYWx0ID0gc2FsdDsgfQogICAgIFN0cmlu
ZyBkZXZpY2VJREhhc2hTYWx0KCkgY29uc3QgeyByZXR1cm4gbV9pZEhhc2hTYWx0OyB9Ci0gICAg
dm9pZCBzdG9wTWVkaWFDYXB0dXJlKCk7CiAjZW5kaWYKIAogLy8gRklYTUU6IEZpbmQgYSBiZXR0
ZXIgcGxhY2UgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDkw
YWY0ZGYyZmE4OTFiY2JkM2JmOTFhYzUxNGU1OTQ1MzdiMDNkOTQuLmZmYzYwZGZjZjJkZmY4NWU5
MDI3ZmJlZDhhZjBlYTk2OWY5ZjAyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTUzMiwxOCAr
MTUzMiw2IEBAIHZvaWQgUGFnZTo6c2V0TXV0ZWQoTWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZs
YWdzIG11dGVkKQogICAgIH0KIH0KIAotdm9pZCBQYWdlOjpzdG9wTWVkaWFDYXB0dXJlKCkKLXsK
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0g
ICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3RvcE1lZGlhQ2FwdHVyZSgpOwotICAgIH0KLSNl
bmRpZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiB2b2lkIFBhZ2U6OmhhbmRsZU1l
ZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUgZXZlbnRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAx
OTQyOTYxMTdiZmZlYjgwNzI4NzVlODM3YjhjZGZiMzQyNTE4MDU1Li44Njc5ZDg2NjA0ODIzMDNk
NDk2Y2ExYTM1MjA0Zjk1ZmI4MDYzNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTMwLDcgKzUzMCw2
IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXVkaW9NdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0
ZWRTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvSXNNdXRlZDsgfQogICAgIGJvb2wgaXNNZWRp
YUNhcHR1cmVNdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWRTdGF0ZSAmIE1lZGlhUHJvZHVj
ZXI6OkNhcHR1cmVEZXZpY2VzQXJlTXV0ZWQ7IH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRNdXRlZChNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBmNzJlMzY1MDBlMWY4MzM3ZWI1ODY3
ZjViYzUwNWY3OWQ3MTdiM2FiLi5jY2JmYjBlNjViMTEzOWQxNmQwZGM2ZjlmNmZhMTBmZDU0NGQ1
NDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC01ODAsMjEgKzU4MCwyMSBAQCBQ
bGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJhY2tn
cm91bmRMYXllcigpCiAKIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlz
cGxheU1vZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlz
cGxheU1vZGUoKSBjb25zdAogewotICAgIGlmIChtX2ludHJpbnNpY1NpemUuaXNFbXB0eSgpIHx8
ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAg
ICBpZiAobV9lbmRlZCB8fCBtX2ludHJpbnNpY1NpemUuaXNFbXB0eSgpIHx8ICFtZXRhRGF0YUF2
YWlsYWJsZSgpIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgcmV0dXJu
IE5vbmU7CiAKICAgICBpZiAoYXV0byogdHJhY2sgPSBtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0
aXZlVmlkZW9UcmFjaygpKSB7Ci0gICAgICAgIGlmICghdHJhY2stPmVuYWJsZWQoKSB8fCB0cmFj
ay0+bXV0ZWQoKSB8fCB0cmFjay0+ZW5kZWQoKSkKKyAgICAgICAgaWYgKCF0cmFjay0+ZW5hYmxl
ZCgpIHx8IHRyYWNrLT5tdXRlZCgpKQogICAgICAgICAgICAgcmV0dXJuIFBhaW50SXRCbGFjazsK
ICAgICB9CiAKLSAgICBpZiAocGxheWluZygpICYmICFtX2VuZGVkKSB7CisgICAgaWYgKHBsYXlp
bmcoKSkgewogICAgICAgICBpZiAoIW1fbWVkaWFTdHJlYW1Qcml2YXRlLT5pc1Byb2R1Y2luZ0Rh
dGEoKSkKICAgICAgICAgICAgIHJldHVybiBQYXVzZWRJbWFnZTsKICAgICAgICAgcmV0dXJuIExp
dmVQcmV2aWV3OwogICAgIH0KIAotICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0gUGxheWJhY2tT
dGF0ZTo6Tm9uZSB8fCBtX2VuZGVkKQorICAgIGlmIChtX3BsYXliYWNrU3RhdGUgPT0gUGxheWJh
Y2tTdGF0ZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuIFBhaW50SXRCbGFjazsKIAogICAgIHJldHVy
biBQYXVzZWRJbWFnZTsKQEAgLTc2OCwxMCArNzY4LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmFjdGl2ZVN0YXR1c0NoYW5nZWQoKQogCiAgICAgICAgIGlm
IChlbmRlZCAhPSBtX2VuZGVkKSB7CiAgICAgICAgICAgICBtX2VuZGVkID0gZW5kZWQ7Ci0gICAg
ICAgICAgICBpZiAobV9wbGF5ZXIpIHsKKyAgICAgICAgICAgIGlmIChtX3BsYXllcikKICAgICAg
ICAgICAgICAgICBtX3BsYXllci0+dGltZUNoYW5nZWQoKTsKLSAgICAgICAgICAgICAgICBtX3Bs
YXllci0+Y2hhcmFjdGVyaXN0aWNDaGFuZ2VkKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXggYTc5NzA0ZGQ4NWEzNTk4OTNmYjRjZmY1
ODczOGE1NmFkOWExNmFjYi4uYWQxZDUwMTA5ZWQ1YmE1Nzk4OTlmMmM1ZWVhZWJjODM5NGRhYWM3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTk1LDggKzk1LDYgQEAgcHVibGljOgogICAgIHZvaWQg
c3RvcFByb2R1Y2luZ0RhdGEoKTsKICAgICBib29sIGlzUHJvZHVjaW5nRGF0YSgpIGNvbnN0Owog
Ci0gICAgdm9pZCBlbmRTdHJlYW0oKTsKLQogICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKICAg
ICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAgICAgYm9vbCBtdXRlZCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0
dXJlU291cmNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
TWVkaWFDYXB0dXJlU291cmNlLm1tCmluZGV4IDEyMmJkYjhmNDk0MDE4YzJjMDQ1YWJmODQ3NWQ5
MWE2YWU1YmQ3MmEuLmU3ZGI5NDgwZTUzNTdlMjdlZjE2NDgyZWU5YmE0MTA5NzgxMzE5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVk1lZGlh
Q2FwdHVyZVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KQEAgLTE4MSwxNCArMTgxLDExIEBAIHZvaWQg
QVZNZWRpYUNhcHR1cmVTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCiAKIHZvaWQgQVZNZWRp
YUNhcHR1cmVTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKIHsKLSAgICBpZiAoIW1fc2Vzc2lv
bikKKyAgICBpZiAoIW1fc2Vzc2lvbiB8fCAhW21fc2Vzc2lvbiBpc1J1bm5pbmddKQogICAgICAg
ICByZXR1cm47CiAKICAgICBbbV9vYmpjT2JzZXJ2ZXIgcmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2
ZXJzXTsKLQotICAgIGlmIChbbV9zZXNzaW9uIGlzUnVubmluZ10pCi0gICAgICAgIFttX3Nlc3Np
b24gc3RvcFJ1bm5pbmddOwotCisgICAgW21fc2Vzc2lvbiBzdG9wUnVubmluZ107CiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIG1fc2Vzc2lvbiA9IG51bGxwdHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggYTg4MGQzZmZhZGRmMDc5MTc2Yzk1
YmYyZGY2MzNlZDMzODU1YjY3MS4uNGFlNzUyYjhhY2FhMDQwNjYxZjA4N2VjN2RkOTU0MGE4NmE0
ZTA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI2
NzcsMTYgKzI2NzcsNiBAQCB2b2lkIFdLUGFnZVNldE11dGVkKFdLUGFnZVJlZiBwYWdlLCBXS01l
ZGlhTXV0ZWRTdGF0ZSBtdXRlZCkKICAgICB0b0ltcGwocGFnZSktPnNldE11dGVkKG11dGVkKTsK
IH0KIAotdm9pZCBXS1BhZ2VTZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlLCBi
b29sIGVuYWJsZWQpCi17Ci0gICAgdG9JbXBsKHBhZ2UpLT5zZXRNZWRpYUNhcHR1cmVFbmFibGVk
KGVuYWJsZWQpOwotfQotCi1ib29sIFdLUGFnZUdldE1lZGlhQ2FwdHVyZUVuYWJsZWQoV0tQYWdl
UmVmIHBhZ2UpCi17Ci0gICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+bWVkaWFDYXB0dXJlRW5hYmxl
ZCgpOwotfQotCiB2b2lkIFdLUGFnZURpZEFsbG93UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2Up
CiB7CiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCmluZGV4IDYwMDliYWQ5YTQ2MTIyYWE2OTI5YzllYmRh
MDA0YTdjNDUwNTY0ZTMuLjljNDE2MjMwODhkZTRkYjcwOGI0NGJmNGVkZGYzMDliZTM5ZGU1NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaApA
QCAtMTI3LDggKzEyNyw2IEBAIHR5cGVkZWYgdWludDMyX3QgV0tNZWRpYU11dGVkU3RhdGU7CiBX
S19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRNdXRlZChXS1BhZ2VSZWYgcGFnZSwgV0tNZWRpYU11dGVk
U3RhdGUgbXV0ZWQpOwogCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VDbGVhclVzZXJNZWRpYVN0YXRl
KFdLUGFnZVJlZiBwYWdlKTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldE1lZGlhQ2FwdHVyZUVu
YWJsZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgZW5hYmxlZCk7Ci1XS19FWFBPUlQgYm9vbCBXS1Bh
Z2VHZXRNZWRpYUNhcHR1cmVFbmFibGVkKFdLUGFnZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JUIHZv
aWQgV0tQYWdlRGlkQWxsb3dQb2ludGVyTG9jayhXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQg
dm9pZCBXS1BhZ2VEaWREZW55UG9pbnRlckxvY2soV0tQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA5NTE5MjQ2
YWYyZTk1ZTA1MDliM2MwZDYzYmEzMjY2ZDc5OTVmMDNhLi5iZDRiZjQyODZjOTQyZTcwMjA5Y2M2
MTRhOWQyMDFmMTEyOTc1ODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDQ3MywxNiArNDQ3Myw2IEBAIHN0YXRpYyBpbmxpbmUg
V2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZE9w
dGlvbnMpCiAgICAgX3BhZ2UtPnNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkNhcHR1
cmVEZXZpY2VzQXJlTXV0ZWQpOwogfQogCi0tICh2b2lkKV9zZXRNZWRpYUNhcHR1cmVFbmFibGVk
OihCT09MKWVuYWJsZWQKLXsKLSAgICBfcGFnZS0+c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChlbmFi
bGVkKTsKLX0KLQotLSAoQk9PTClfbWVkaWFDYXB0dXJlRW5hYmxlZAotewotICAgIHJldHVybiBf
cGFnZS0+bWVkaWFDYXB0dXJlRW5hYmxlZCgpOwotfQotCiAtICh2b2lkKV9zZXRQYWdlTXV0ZWQ6
KF9XS01lZGlhTXV0ZWRTdGF0ZSltdXRlZFN0YXRlCiB7CiAgICAgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIGNvcmVTdGF0ZSA9IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok5vbmVNdXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMzcwMGYzMDU0NjUzYzE4NGI4MzNjY2MxOGI0ODg2
YzI2ZTM3NzM3NC4uODdkNmE2ZGI2OGM1NzU2MjEwMTMwYzdhOGVmYmVjY2MxMzY3M2FhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKQEAgLTI5MiwxMSArMjkyLDkgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0RnVsbHNjcmVlbkRlbGVnYXRlOikgaWQ8X1dLRnVsbHNjcmVlbkRlbGVnYXRlPiBfZnVsbHNj
cmVlbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaXNJbkZ1bGxzY3JlZW4gV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogCi0tICh2b2lkKV9tdXRlTWVkaWFDYXB0dXJl
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
LSAodm9pZClfbXV0ZU1lZGlhQ2FwdHVyZTsKIC0gKHZvaWQpX3NldFBhZ2VNdXRlZDooX1dLTWVk
aWFNdXRlZFN0YXRlKW11dGVkU3RhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dE1lZGlhQ2FwdHVyZUVuYWJsZWQ6KSBCT09MIF9tZWRpYUNhcHR1cmVFbmFibGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCiBAZW5kCiAK
ICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQppbmRleCA0ZjIxZTgyMzMwMWMzYzZhZGNkMzlkNmNlMGIwNzdjZTdjNGNh
NWIxLi44NGM1ZWQxMDRjNDBhMDNjZDBhMGNiZWU2YTg3MWNmYzZhNzZmMGEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMTE1LDExICsxMTUs
MTEgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBkZWxl
Z2F0ZSkKICNlbmRpZgogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdBY3Rpb25zRm9yRWxl
bWVudERlZmF1bHRBY3Rpb25zID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6YWN0aW9uc0ZvckVsZW1lbnQ6ZGVmYXVsdEFjdGlvbnM6KV07CiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZE5vdEhhbmRsZVRhcEFzQ2xpY2tBdFBvaW50ID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkTm90SGFuZGxl
VGFwQXNDbGlja0F0UG9pbnQ6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMucHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyRm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXJGb3JXZWJWaWV3OildOwotI2VuZGlmCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3RVc2VyTWVkaWFBdXRob3JpemF0aW9u
Rm9yRGV2aWNlc1VSTE1haW5GcmFtZVVSTERlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3RVc2VyTWVkaWFBdXRob3Jp
emF0aW9uRm9yRGV2aWNlczp1cmw6bWFpbkZyYW1lVVJMOmRlY2lzaW9uSGFuZGxlcjopXTsKICAg
ICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yVVJM
TWFpbkZyYW1lVVJMRnJhbWVJZGVudGlmaWVyRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yVVJMOm1haW5GcmFtZVVSTDpmcmFtZUlkZW50aWZpZXI6ZGVjaXNpb25IYW5kbGVyOild
OwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5n
ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3Om1lZGlh
Q2FwdHVyZVN0YXRlRGlkQ2hhbmdlOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLnByZXNlbnRp
bmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmlldzopXTsKKyNlbmRp
ZgogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRhdGFEZXRlY3Rpb25Db250ZXh0Rm9yV2ViVmlldyA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kYXRhRGV0ZWN0aW9uQ29u
dGV4dEZvcldlYlZpZXc6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0ltYWdlT3JN
ZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlldzppbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkOildOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAyN2FlNDQ1ZDVlMTMwN2Vh
Nzc1MGY2N2MwNzM5OTYxY2NkNmFhODM1Li43NTY4MDQwZjNkZTJjMTZhNjE4MzUzZWRlMjkzN2E4
YWUxNzA5NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTk2
LDcgKzk2LDYgQEAgRnJhbWVBdXRob3JpemF0aW9uU3RhdGUmIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5OjpzdGF0ZUZvclJlcXVlc3QKIAogVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9yZWpl
Y3Rpb25UaW1lcigqdGhpcywgJlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpyZWplY3Rpb25UaW1lckZpcmVkKQogewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLmFkZFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5KCp0aGlzKTsKQEAgLTEwOCwxMCArMTA3LDEwIEBAIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojp+VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkoCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVk
aWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkucmVtb3ZlVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkoKnRoaXMpOwogI2VuZGlmCi0gICAgaW52YWxpZGF0ZVBlbmRpbmdS
ZXF1ZXN0cygpOworICAgIGludmFsaWRhdGVSZXF1ZXN0cygpOwogfQogCi12b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUGVuZGluZ1JlcXVlc3Rz
KCkKK3ZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFsaWRh
dGVSZXF1ZXN0cygpCiB7CiAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nVXNlck1l
ZGlhUmVxdWVzdHMudmFsdWVzKCkpCiAgICAgICAgIHJlcXVlc3QtPmludmFsaWRhdGUoKTsKQEAg
LTEyNCwxNSArMTIzLDkgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eTo6aW52YWxpZGF0ZVBlbmRpbmdSZXF1ZXN0cygpCiAgICAgbV9mcmFtZVN0YXRlcy5jbGVh
cigpOwogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpz
dG9wQ2FwdHVyZSgpCi17Ci0gICAgaW52YWxpZGF0ZVBlbmRpbmdSZXF1ZXN0cygpOwotICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlhQ2FwdHVyZSgp
LCBtX3BhZ2UucGFnZUlEKCkpOwotfQotCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpjbGVhckNhY2hlZFN0YXRlKCkKIHsKLSAgICBpbnZhbGlkYXRlUGVuZGlu
Z1JlcXVlc3RzKCk7CisgICAgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiB9CiAKIFJlZjxVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6Y3JlYXRlUmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhdWRpb0RldmljZVVJRHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2aWRlb0Rl
dmljZVVJRHMpCkBAIC0yMzAsMjMgKzIyMyw2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OnVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQodWludDY0X3QKICNl
bmRpZgogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpy
ZWplY3Rpb25UaW1lckZpcmVkKCkKLXsKLSAgICB1aW50NjRfdCB1c2VyTWVkaWFJRCA9IG1fcGVu
ZGluZ1JlamVjdGlvbnNbMF07Ci0gICAgbV9wZW5kaW5nUmVqZWN0aW9ucy5yZW1vdmUoMCk7Ci0K
LSAgICBkZW55UmVxdWVzdCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQ
cm94eTo6VXNlck1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpQZXJtaXNzaW9uRGVuaWVkLCBlbXB0
eVN0cmluZygpKTsKLSAgICBpZiAoIW1fcGVuZGluZ1JlamVjdGlvbnMuaXNFbXB0eSgpKQotICAg
ICAgICBzY2hlZHVsZU5leHRSZWplY3Rpb24oKTsKLX0KLQotdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6c2NoZWR1bGVOZXh0UmVqZWN0aW9uKCkKLXsKLSAgICBj
b25zdCBkb3VibGUgbWltaW11bURlbGF5QmVmb3JlUmVwbHlpbmcgPSAuMjU7Ci0gICAgaWYgKCFt
X3JlamVjdGlvblRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fcmVqZWN0aW9uVGltZXIuc3Rh
cnRPbmVTaG90KFNlY29uZHMobWltaW11bURlbGF5QmVmb3JlUmVwbHlpbmcgKyByYW5kb21OdW1i
ZXIoKSkpOwotfQotCiB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IHVzZXJNZWRpYUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW5JZGVudGlm
aWVyLCBTdHJpbmcgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6Ok1lZGlhQ29uc3RyYWludHNEYXRhJiBhdWRpb0NvbnN0cmFpbnRzRGF0YSwgY29uc3QgV2Vi
Q29yZTo6TWVkaWFDb25zdHJhaW50c0RhdGEmIHZpZGVvQ29uc3RyYWludHNEYXRhKQogewogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCkBAIC0yOTYsMTIgKzI3Miw2IEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OnJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9u
Rm9yRnJhbWUoCiAKICAgICB9OwogCi0gICAgaWYgKCFVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6
c2luZ2xldG9uKCkuY2FwdHVyZUVuYWJsZWQoKSkgewotICAgICAgICBtX3BlbmRpbmdSZWplY3Rp
b25zLmFwcGVuZCh1c2VyTWVkaWFJRCk7Ci0gICAgICAgIHNjaGVkdWxlTmV4dFJlamVjdGlvbigp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgYXV0byBhdWRpb0NvbnN0cmFpbnRzID0g
TWVkaWFDb25zdHJhaW50c0ltcGw6OmNyZWF0ZShNZWRpYUNvbnN0cmFpbnRzRGF0YShhdWRpb0Nv
bnN0cmFpbnRzRGF0YSkpOwogICAgIGF1dG8gdmlkZW9Db25zdHJhaW50cyA9IE1lZGlhQ29uc3Ry
YWludHNJbXBsOjpjcmVhdGUoTWVkaWFDb25zdHJhaW50c0RhdGEodmlkZW9Db25zdHJhaW50c0Rh
dGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAppbmRleCBlMTJlMDJkYjE2
MGVkZjhhNmY3ZmVlOWYyNWM5MzY2NGFhMTg1ZjE2Li5hZGVmNWY4OTViMmRhMjg3M2JlMjg2ZjNh
OWIwNzdjNWU1MjNlMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaApAQCAt
MTcsMTUgKzE3LDE0IEBACiAgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8KIAotI3ByYWdt
YSBvbmNlCisjaWZuZGVmIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5X2gK
KyNkZWZpbmUgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHlfaAogCiAjaW5j
bHVkZSAiVXNlck1lZGlhUGVybWlzc2lvbkNoZWNrUHJveHkuaCIKICNpbmNsdWRlICJVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Vz
ZXJNZWRpYVJlcXVlc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9TZWNvbmRzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhcHR1cmVEZXZpY2U7
CkBAIC01OCw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgdm9pZCBpbnZhbGlkYXRlUGVuZGluZ1JlcXVl
c3RzKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlUmVxdWVzdHMoKTsKIAogICAgIHZvaWQgcmVxdWVz
dFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCB1c2VyTWVkaWFJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllciwgU3Ry
aW5nIHRvcExldmVsRG9jdW1lbnRPcmlnaW5JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnRzRGF0YSYgYXVkaW9Db25zdHJhaW50c0RhdGEsIGNvbnN0IFdlYkNvcmU6Ok1l
ZGlhQ29uc3RyYWludHNEYXRhJiB2aWRlb0NvbnN0cmFpbnRzRGF0YSk7CiAKQEAgLTcwLDkgKzY5
LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRDb21wbGV0ZVVzZXJNZWRpYVBlcm1pc3Npb25D
aGVjayh1aW50NjRfdCwgY29uc3QgU3RyaW5nJiwgYm9vbCBhbGxvdyk7CiAKLSAgICB2b2lkIHN0
b3BDYXB0dXJlKCk7Ci0gICAgdm9pZCBzY2hlZHVsZU5leHRSZWplY3Rpb24oKTsKLSAgICB2b2lk
IHJlamVjdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGNsZWFyQ2FjaGVkU3RhdGUoKTsKIAog
ICAgIHZvaWQgc3RhcnRlZENhcHR1cmVTZXNzaW9uKCk7CkBAIC04OSwxMCArODUsOCBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxGcmFtZUF1dGhvcml6
YXRpb25TdGF0ZT4+IG1fZnJhbWVTdGF0ZXM7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsK
LQotICAgIFdlYkNvcmU6OlRpbWVyIG1fcmVqZWN0aW9uVGltZXI7Ci0gICAgVmVjdG9yPHVpbnQ2
NF90PiBtX3BlbmRpbmdSZWplY3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
KyNlbmRpZiAvLyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNw
cAppbmRleCA4Yzc1NWZiYWEwOTk2OTYzM2Y4MzVmNWExNjA3ZjIzZTNiNmVmNDY0Li5lNzE4MTZi
YjA3OTkwMjM2YTFjOGQ5MWFjMTZhOThhMTk1NmY2MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKQEAgLTExNSwxMiAr
MTE1LDggQEAgdm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbEVuYWJsZU1lZGlhU3Ry
ZWFtSW5QYWdlKFdlYlBhZ2VQcm94eSYgcGFnZVN0YXIKICAgICBmb3IgKGF1dG8mIHN0YXRlIDog
c3RhdGVNYXAoKSkgewogICAgICAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBzdGF0ZS52YWx1ZS0+
bWFuYWdlcnMoKSkgewogCi0gICAgICAgICAgICBpZiAoJm1hbmFnZXItPnBhZ2UoKSA9PSAmcGFn
ZVN0YXJ0aW5nQ2FwdHVyZSkgewotI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgICAgICAgICBt
YW5hZ2VyLT5wYWdlKCkuc3RvcE1lZGlhQ2FwdHVyZSgpOwotI2VuZGlmCisgICAgICAgICAgICBp
ZiAoJm1hbmFnZXItPnBhZ2UoKSA9PSAmcGFnZVN0YXJ0aW5nQ2FwdHVyZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbWFuYWdlci0+cGFn
ZSgpLnNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkNhcHR1cmVEZXZpY2VzQXJlTXV0
ZWQpOwogICAgICAgICB9CkBAIC0yMzQsMjIgKzIzMCw2IEBAIHZvaWQgVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXI6OmVuZGVkQ2FwdHVyZVNlc3Npb24oVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hCiAjZW5kaWYKIH0KIAotdm9pZCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2V0Q2FwdHVy
ZUVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIGlmIChlbmFibGVkID09IG1fY2FwdHVyZUVu
YWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2FwdHVyZUVuYWJsZWQgPSBlbmFibGVk
OwotCi0gICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byYg
c3RhdGUgOiBzdGF0ZU1hcCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgbWFuYWdlciA6IHN0YXRl
LnZhbHVlLT5tYW5hZ2VycygpKQotICAgICAgICAgICAgbWFuYWdlci0+c3RvcENhcHR1cmUoKTsK
LSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKaW5kZXggOGM1
YmM2ODU4YzJmNWVlMjM3ZTQ0YTI3MjNkN2JiMjcwYWI3MDI0Mi4uYzNlZDM3MzUyZmI0MjQ4ZWM2
ZjNkMmVhZWJmZjAwMDBmYjc5NzI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmgKQEAgLTM5LDEyICszOSw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc3RhcnRlZENhcHR1cmVTZXNzaW9uKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5Jik7CiAgICAgdm9pZCBlbmRlZENhcHR1cmVTZXNzaW9uKFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Jik7Ci0KLSAgICB2b2lkIHNldENhcHR1cmVF
bmFibGVkKGJvb2wpOwotICAgIGJvb2wgY2FwdHVyZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhcHR1cmVFbmFibGVkOyB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBtX2NhcHR1cmVFbmFibGVk
IHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDliYzVmNmE2N2U2YWFjMzU0YzFiMzNhNWQx
MWM4YjA2MWI0YjRkNDIuLjg5MDA2YWJjOGEwYjQ3NjVmOTBlYTIwM2I0NDcyY2NkOGFlMzI3Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjA2LDE4
ICs0MjA2LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE11dGVkKFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBzdGF0ZSkKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSB8IEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVk
aWEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVkaWFDYXB0dXJlRW5hYmxlZChib29s
IGVuYWJsZWQpCi17Ci0gICAgbV9tZWRpYUNhcHR1cmVFbmFibGVkID0gZW5hYmxlZDsKLQotICAg
IGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQotICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDYXB0dXJl
RW5hYmxlZChlbmFibGVkKTsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVu
dFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMDVm
YjFiNjAwY2Y0Y2NjZGVlNTAyYWI1MGRmZjkzYzgyYWQ0NDA4MC4uYjQ4ZDY0NjkzM2E5ZGM0MTk5
Y2NhMTcwNTg5MTc1MDRmOGJlZDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtOTc5LDkgKzk3OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE11dGVkKFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyk7CiAgICAgdm9pZCBzZXRNYXlT
dGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wpOwogICAgIGJvb2wgbWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsgfQot
ICAgIHZvaWQgc2V0TWVkaWFDYXB0dXJlRW5hYmxlZChib29sKTsKLSAgICBib29sIG1lZGlhQ2Fw
dHVyZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2FwdHVyZUVuYWJsZWQ7IH0KLQog
ICAgICAgICAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBib29sIGhhc01lZGlhU2Vz
c2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNZWRpYVNl
c3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50czsgfQpAQCAtMTkzOCw3ICsxOTM1LDYgQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBtX21lZGlhVm9sdW1lOwogICAgIFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6Ok11dGVkU3RhdGVGbGFncyBtX211dGVkU3RhdGUgeyBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpOb25lTXV0ZWQgfTsKICAgICBib29sIG1fbWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdzsKLSAg
ICBib29sIG1fbWVkaWFDYXB0dXJlRW5hYmxlZCB7IHRydWUgfTsKIAogICAgIGJvb2wgbV93YWl0
aW5nRm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IGZhM2JkYWNiZjZmOWM1MWQ2ZWNjMzY4
ODczYzZhYjI3Yjg5OWQ4NzYuLjdmMTFkYzdhMzk1YWZkYmQ0YzIzZmU5Zjg2NzA4YThlOGVkZmU1
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKQEAgLTU2LDE1ICs1Niw2IEBAIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6
flVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcigpCiAgICAgICAgIHNhbmRib3hFeHRl
bnNpb24udmFsdWUtPnJldm9rZSgpOwogfQogCi12b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlcjo6Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKCkKLXsKLSAgICBmb3IgKGF1dG8mIHJl
cXVlc3QgOiBtX2lkVG9Vc2VyTWVkaWFSZXF1ZXN0TWFwLnZhbHVlcygpKQotICAgICAgICBjYW5j
ZWxVc2VyTWVkaWFSZXF1ZXN0KCpyZXF1ZXN0KTsKLQotICAgIGZvciAoYXV0byYgcmVxdWVzdCA6
IG1faWRUb01lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdE1hcC52YWx1ZXMoKSkKLSAgICAg
ICAgY2FuY2VsTWVkaWFEZXZpY2VzRW51bWVyYXRpb24oKnJlcXVlc3QpOwotfQotCiB2b2lkIFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRVc2VyTWVkaWFSZXF1ZXN0KFVz
ZXJNZWRpYVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVx
dWVzdC5kb2N1bWVudCgpOwpAQCAtMTEzLDggKzEwNCw2IEBAIHZvaWQgVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxVc2VyTWVkaWFSZXF1ZXN0KFVzZXJNZWRpYVJlcXVl
c3QmCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gbV91c2VyTWVkaWFSZXF1ZXN0VG9JRE1hcC50
YWtlKCZyZXF1ZXN0KTsKICAgICBpZiAoIXJlcXVlc3RJRCkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgcmVxdWVzdC5kZW55KFVzZXJNZWRpYVJlcXVlc3Q6Ok90aGVyRmFpbHVyZSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgbV9pZFRvVXNlck1lZGlhUmVxdWVzdE1hcC5yZW1vdmUocmVxdWVzdElEKTsK
ICAgICByZW1vdmVNZWRpYVJlcXVlc3RGcm9tTWFwcyhyZXF1ZXN0KTsKIH0KQEAgLTIwMSw3ICsx
OTAsNiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6Y2FuY2VsTWVk
aWFEZXZpY2VzRW51bWVyYXRpb24oV2ViQ29yZTo6TQogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9
IG1fbWVkaWFEZXZpY2VzRW51bWVyYXRpb25SZXF1ZXN0VG9JRE1hcC50YWtlKCZyZXF1ZXN0KTsK
ICAgICBpZiAoIXJlcXVlc3RJRCkKICAgICAgICAgcmV0dXJuOwotICAgIHJlcXVlc3Quc2V0RGV2
aWNlSW5mbyhWZWN0b3I8Q2FwdHVyZURldmljZT4oKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UpOwog
ICAgIG1faWRUb01lZGlhRGV2aWNlc0VudW1lcmF0aW9uUmVxdWVzdE1hcC5yZW1vdmUocmVxdWVz
dElEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0
cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgKaW5kZXggNmI0NDFmMTU2NTM3MGUwNjYxMGY3MzhjZDljYTZjZWQxZWFkZmE1My4uZThhOTZj
MjUzZjEzYzg0Y2EzMTBkNzA1YWE3MGJlOTI2NzgyZTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCkBAIC01NSw4ICs1NSw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdyYW50VXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgTWVk
aWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyYpOwogICAgIHZvaWQgcmV2b2tlVXNlck1lZGlhRGV2
aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKIAotICAgIHZvaWQg
Y2FuY2VsUGVuZGluZ1JlcXVlc3RzKCk7Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kVXNlck1l
ZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmOWEzZWVlYWU5NGEzNjk2
MTUxODU3NTgwMGNjMWIyNmJjODVlZmZjLi5jN2NlZWJiNjY2MmIzMGQxNDRlZDRiYTUxNWY3MThi
NjY5Y2VkZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC00NTU2LDEzICs0NTU2LDYgQEAgdm9pZCBXZWJQYWdlOjpzZXRNdXRlZChNZWRp
YVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCiAgICAgbV9wYWdlLT5zZXRNdXRlZChz
dGF0ZSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c3RvcE1lZGlhQ2FwdHVyZSgpCi17Ci0jaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3BhZ2UtPnN0b3BNZWRpYUNhcHR1cmUoKTsKLSNlbmRp
ZgotfQotCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiB2b2lkIFdlYlBhZ2U6OmhhbmRsZU1l
ZGlhRXZlbnQodWludDMyX3QgZXZlbnRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYjAxMTE2NjM3YmI4MDZhNjQ5M2QxMGQxY2QxMWE5
ZmEwZTM3OWU5NS4uODgyZTU4ZDg5MzQzOGY5OWE0ZjI0YjhjOWE3MWYyNzMxZTkxM2Q5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03NjUsNyAr
NzY1LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogICAgIHZv
aWQgc2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzKTsKICAg
ICB2b2lkIHNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9vbCk7Ci0gICAgdm9pZCBzdG9w
TWVkaWFDYXB0dXJlKCk7CiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICB2b2lkIGhh
bmRsZU1lZGlhRXZlbnQodWludDMyX3QgLyogV2ViQ29yZTo6TWVkaWFFdmVudFR5cGUgKi8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBlZjExNTEzMzBmMmNmOTk0NWE0MGQxMjQ1MTZhOTgxM2E0YmVhMmEwLi4z
NTFiZDA5YTVmZWIyYjU0MWJiYzhiNmVmZDEzZjAwNWUwNGE1OWU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
MzM4LDcgKzMzOCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICBTZXRNdXRlZChXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MgbXV0ZWQpCiAgICAgU2V0TWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCi0gICAgU3RvcE1lZGlhQ2FwdHVyZSgpCiAK
ICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBIYW5kbGVNZWRpYUV2ZW50KHVpbnQzMl90
IGV2ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA5YzUzNGU5ZDRkYTZkYzA5NTQ0ZDY1N2U0MDA3NWNjYzAxZDAzMzlhLi42ZmRkOWE0
NDI2ZTExMjM2ZjlkYzAxZDQwNGEzNDdiZjE1OTY0NDVmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDUtMDQg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMTYxNzIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE2NTQKKworICAgICAgICBGVEJGUyBmb3IgaU9TIGR1ZSB0
byBtaXNzaW5nIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCisgICAgICAgIGltcGxl
bWVudGF0aW9uLiAoUmVxdWVzdGVkIGJ5IGRka2lsemVyIG9uICN3ZWJraXQpLgorCisgICAgICAg
IFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW01lZGlhU3RyZWFtXSBBbGxvdyBob3N0
IGFwcGxpY2F0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIG1lZGlhCisgICAgICAgIGNhcHR1cmUiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyOTIKKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjE2MTcyCisKIDIwMTctMDUt
MDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIEJ1bXAgR1N0cmVhbWVyIHZlcnNpb24gdG8gMS4xMC40IGluIGpoYnVpbGQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMTk4NjRjZGVhZDVlNjI4ZjFkNDM2N2JmZDVkNmI2ZjBjMzRh
ZTYwOC4uYTg4N2UxNTU4NzU4YTUxN2RiMDJlY2EzZDliZGJlMGEwZDU5YzNmNCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTI1LDggKzI1LDYgQEAKIAkJMDc0OTJCM0IxREY4QjE0QzAwNjMz
REUxIC8qIEVudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVy
YXRlTWVkaWFEZXZpY2VzLmNwcCAqLzsgfTsKIAkJMDc0OTJCM0MxREY4Qjg2NjAwNjMzREUxIC8q
IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDkyQjM5MURGOEFEQTQwMDYzM0RFMSAvKiBlbnVt
ZXJhdGVNZWRpYURldmljZXMuaHRtbCAqLzsgfTsKIAkJMDc0OTk0NDIxRUE1MDM0QjAwMERBNDRF
IC8qIGdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNSAvKiBnZXRVc2VyTWVk
aWEuaHRtbCAqLzsgfTsKLQkJMDc5OUMzNDkxRUJBMkQ3QjAwM0I3NTMyIC8qIFVzZXJNZWRpYURp
c2FibGVkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdFREVGQUMxRUI5NDAwQzAwRDQzMjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tICovOyB9Owot
CQkwNzk5QzM0QjFFQkEzMzAxMDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTlD
MzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi87IH07CiAJ
CTA3QzA0NkNBMUU0MjYyQTgwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdDMDQ2QzkxRTQyNTczRTAwNzIw
MUU3IC8qIENBUmluZ0J1ZmZlci5jcHAgKi87IH07CiAJCTBGMTM5RTc3MUE0MjNBNUIwMEY1OTBG
NSAvKiBXZWFrT2JqQ1B0ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMTM5RTc1MUE0MjNBNTMwMEY1OTBGNSAvKiBXZWFrT2JqQ1B0ci5tbSAqLzsg
fTsKIAkJMEYxMzlFNzgxQTQyM0E2QjAwRjU5MEY1IC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOUU3
MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAqLzsgfTsKQEAg
LTY4OSw3ICs2ODcsNiBAQAogCQkJZmlsZXMgPSAoCiAJCQkJNTUyMjZBMkYxRUJBNDRCOTAwQzM2
QUQwIC8qIGxhcmdlLXJlZC1zcXVhcmUtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk1Nzk3RkUzMzFFQjE1QUIxMDBCMkY0QTAgLyogbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVs
dC1jcnlwdG8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKLQkJCQkwNzk5QzM0QjFFQkEzMzAx
MDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTA3NDk5NDQyMUVBNTAzNEIwMDBEQTQ0RSAvKiBnZXRVc2VyTWVkaWEuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlDOUJGMDZFRjFFOUMxMzI1MDA1OTVFM0UgLyogYXV0b3Bs
YXktbXV0ZWQtd2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0
REVGNkVEMUU5QjREQjYwMDQ4RUY2MSAvKiBpbWFnZS1pbi1saW5rLWFuZC1pbnB1dC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLApAQCAtODgyLDkgKzg3OSw3IEBACiAJCTA3NDkyQjM5MURGOEFE
QTQwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmljZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IGVudW1lcmF0ZU1lZGlhRGV2aWNlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzQ5MkIzQTFERjhBRTJEMDA2MzNERTEgLyogRW51bWVyYXRlTWVkaWFE
ZXZpY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVudW1lcmF0
ZU1lZGlhRGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NjZERDFG
MUE1QUQ1MjAwMDIzRTNCQiAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNh
YmxlR2V0VXNlck1lZGlhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBkaXNhYmxl
R2V0VXNlck1lZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QzA0NkM5
MUU0MjU3M0UwMDcyMDFFNyAvKiBDQVJpbmdCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ0FSaW5nQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDdFREVGQUMxRUI5NDAwQzAwRDQzMjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlck1lZGlhRGlzYWJs
ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzM0MTQ4NTdDRTQwMEVB
MjAwMyAvKiBIYXNoTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhhc2hNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODU2OTE0ODVD
OThCMDBFQTIwMDMgLyogU2V0Rm9yU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2V0Rm9yU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBsYXRmb3JtVXRpbGl0aWVz
Q29jb2EubW07IHBhdGggPSBjb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3Niw3ICsxNjcxLDYgQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJN0NF
RkE5NjQxQUMwQjlFMjAwQjkxMEZEIC8qIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0g
Ki8sCi0JCQkJMDdFREVGQUMxRUI5NDAwQzAwRDQzMjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1t
ICovLAogCQkJCTM3RTdERDYzMUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vz
c0FsbG93ZWRVUkxzLm1tICovLAogCQkJCTM3RTdERDY2MUVBMDcxRjMwMDlCMzk2RCAvKiBBZGRp
dGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tICovLAogCQkJCTM3RTdERDY1MUVB
MDcxNUIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wu
aCAqLywKQEAgLTE5MDIsNyArMTg5Niw2IEBACiAJCQkJMkVGRjA2QzYxRDg4NkE1NjAwMDRCQjMw
IC8qIGNoYW5nZS12aWRlby1zb3VyY2Utb24tZW5kLmh0bWwgKi8sCiAJCQkJQTE2RjY2QjkxQzQw
RUEyMDAwQkQ0RDI0IC8qIENvbnRlbnRGaWx0ZXJpbmcuaHRtbCAqLywKIAkJCQk1QzI5MzY5NDFE
NUJGRDE5MDBERUFCMUUgLyogQ29va2llTWVzc2FnZS5odG1sICovLAotCQkJCTA3OTlDMzRBMUVC
QTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi8sCiAJCQkJODM3QTM1
RjAxRDlBMUU2NDAwNjYzQzU3IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCAqLywKIAkJ
CQk1NzE0RUNCODFDQThCNTg4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkwu
aHRtbCAqLywKIAkJCQk1NzE0RUNCQzFDQThDMjE4MDAwNTFBQzggLyogRG93bmxvYWRSZXF1ZXN0
T3JpZ2luYWxVUkwyLmh0bWwgKi8sCkBAIC0zMDg2LDcgKzMwNzksNiBAQAogCQkJCUQzNEUwODc2
MUU0RTQyRTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTMxNTIzMUNBMUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0gaW4g
U291cmNlcyAqLywKIAkJCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3U2Vs
ZWN0aW9uVGVzdHMubW0gaW4gU291cmNlcyAqLywKLQkJCQkwNzk5QzM0OTFFQkEyRDdCMDAzQjc1
MzIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5M0Y1NkRBOTFF
NUY5MTlEMDAzRURFODQgLyogV0tXZWJWaWV3U25hcHNob3QubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzY0MzIyRDcxQjYxQ0NDMzAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5
cGluZ0F0dHJpYnV0ZXMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlck1lZGlhRGlzYWJsZWQubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4Y2ZmODE0ZTI4ZmQwMzRmODUxOThkYjFjMTRl
NTA1Y2ZiMDEwMDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlck1lZGlhRGlzYWJs
ZWQubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotCi0jaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgotI2ltcG9ydCAi
VGVzdC5oIgotI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgotCi0jaW1wb3J0IDxXZWJLaXQvV0tQ
cmVmZXJlbmNlc1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJv
bGxlclByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIFdLX0FQSV9FTkFCTEVECi0K
LXN0YXRpYyBib29sIHJlZnVzZVJlcXVlc3QgPSBmYWxzZTsKLXN0YXRpYyBib29sIHdhc1Byb21w
dGVkID0gZmFsc2U7Ci0KLXN0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNl
Owotc3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOwot
Ci1AaW50ZXJmYWNlIFVzZXJNZWRpYU1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0
TWVzc2FnZUhhbmRsZXI+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBVc2VyTWVkaWFNZXNzYWdl
SGFuZGxlcgotCi0tICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENv
bnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6
KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKLXsKLSAgICBsYXN0U2NyaXB0TWVzc2FnZSA9IG1l
c3NhZ2U7Ci0gICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKLX0KLUBlbmQKLQotQGlu
dGVyZmFjZSBVc2VyTWVkaWFVSURlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KLUBl
bmQKLQotQGltcGxlbWVudGF0aW9uIFVzZXJNZWRpYVVJRGVsZWdhdGUKLQotLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0VXNlck1lZGlhQXV0aG9yaXphdGlvbkZv
ckRldmljZXM6KE5TVUludGVnZXIpZGV2aWNlcyB1cmw6KE5TVVJMICopdXJsIG1haW5GcmFtZVVS
TDooTlNVUkwgKiltYWluRnJhbWVVUkwgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlk
ZWNpc2lvbkhhbmRsZXIKLXsKLSAgICB3YXNQcm9tcHRlZCA9IHRydWU7Ci0KLSAgICBpZiAocmVm
dXNlUmVxdWVzdCkgewotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoTk8pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQk9PTCBuZWVkc01pY3JvcGhvbmVBdXRob3JpemVkID0gZGV2aWNl
cyAmIF9XS0NhcHR1cmVEZXZpY2VNaWNyb3Bob25lOwotICAgIEJPT0wgbmVlZHNDYW1lcmFBdXRo
b3JpemVkID0gZGV2aWNlcyAmIF9XS0NhcHR1cmVEZXZpY2VDYW1lcmE7Ci0gICAgaWYgKCFuZWVk
c01pY3JvcGhvbmVBdXRob3JpemVkICYmICFuZWVkc0NhbWVyYUF1dGhvcml6ZWQpIHsKLSAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKE5PKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGRl
Y2lzaW9uSGFuZGxlcihZRVMpOwotfQotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvclVSTDooTlNVUkwgKil1cmwgbWFpbkZy
YW1lVVJMOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZUlkZW50aWZpZXI6KE5TVUludGVnZXIp
ZnJhbWVJZGVudGlmaWVyIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgQk9P
TCkpZGVjaXNpb25IYW5kbGVyCi17Ci0gICAgaWYgKHJlZnVzZVJlcXVlc3QpIHsKLSAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKG5pbCwgTk8pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotQGVu
ZAotCi1jbGFzcyBNZWRpYUNhcHR1cmVEaXNhYmxlZFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIG1f
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7Ci0KLSAgICAgICAgUmV0YWluUHRyPFVzZXJNZWRpYU1lc3NhZ2VIYW5kbGVyPiBoYW5k
bGVyID0gYWRvcHROUyhbW1VzZXJNZWRpYU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0g
ICAgICAgIFtbbV9jb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKLQotICAg
ICAgICBtX3dlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm1fY29uZmlndXJh
dGlvbi5nZXQoKV0pOwotCi0gICAgICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBbbV93ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dLnByZWZlcmVuY2VzOwotICAgICAgICBwcmVmZXJlbmNlcy5fbWVkaWFEZXZp
Y2VzRW5hYmxlZCA9IFlFUzsKLSAgICAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQgPSBZRVM7Ci0gICAgICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJl
c1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKLQotICAgICAgICBtX3VpRGVsZWdhdGUgPSBhZG9wdE5T
KFtbVXNlck1lZGlhVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgICAgICBbbV93ZWJWaWV3
IHNldFVJRGVsZWdhdGU6bV91aURlbGVnYXRlLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2b2lkIGxv
YWRUZXN0QW5kV2FpdEZvck1lc3NhZ2UoY29uc3QgY2hhciogbWVzc2FnZSkKLSAgICB7Ci0gICAg
ICAgIHdhc1Byb21wdGVkID0gZmFsc2U7Ci0gICAgICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9
IGZhbHNlOwotICAgICAgICBbbV93ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZGlzYWJsZUdl
dFVzZXJNZWRpYSJdOwotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVk
U2NyaXB0TWVzc2FnZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUShbKE5TU3RyaW5nICopW2xhc3RT
Y3JpcHRNZXNzYWdlIGJvZHldIFVURjhTdHJpbmddLCBtZXNzYWdlKTsKLSAgICB9Ci0KLSAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwotICAgIFJl
dGFpblB0cjxVc2VyTWVkaWFVSURlbGVnYXRlPiBtX3VpRGVsZWdhdGU7Ci0gICAgUmV0YWluUHRy
PFRlc3RXS1dlYlZpZXc+IG1fd2ViVmlldzsKLX07Ci0KLVRFU1RfRihNZWRpYUNhcHR1cmVEaXNh
YmxlZFRlc3QsIEVuYWJsZUFuZERpc2FibGUpCi17Ci0gICAgRVhQRUNUX1RSVUUobV93ZWJWaWV3
LmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkKTsKLSAgICBsb2FkVGVzdEFuZFdhaXRGb3JNZXNz
YWdlKCJhbGxvd2VkIik7Ci0gICAgRVhQRUNUX1RSVUUod2FzUHJvbXB0ZWQpOwotCi0gICAgbV93
ZWJWaWV3LmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gTk87Ci0gICAgRVhQRUNUX0ZBTFNF
KG1fd2ViVmlldy5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCk7Ci0gICAgbG9hZFRlc3RBbmRX
YWl0Rm9yTWVzc2FnZSgiZGVuaWVkIik7Ci0gICAgRVhQRUNUX0ZBTFNFKHdhc1Byb21wdGVkKTsK
LQotICAgIG1fd2ViVmlldy5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKLSAgICBF
WFBFQ1RfVFJVRShtX3dlYlZpZXcuZ2V0KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQpOwotICAgIGxv
YWRUZXN0QW5kV2FpdEZvck1lc3NhZ2UoImFsbG93ZWQiKTsKLSAgICBFWFBFQ1RfVFJVRSh3YXNQ
cm9tcHRlZCk7Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0MkNvY29hL2Rpc2FibGVHZXRVc2VyTWVkaWEuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2Rpc2FibGVHZXRVc2VyTWVkaWEuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI2MWQ5YjEzYWM0OWIyN2JmMGI0ZWVkZWRlZmQ4MTcy
ZDUyYmMwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9kaXNhYmxlR2V0VXNlck1lZGlh
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi08c2NyaXB0PgotICAgIGZ1bmN0
aW9uIGdvdFVzZXJNZWRpYShtZWRpYVN0cmVhbSkKLSAgICB7Ci0gICAgICAgIHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdhbGxvd2VkJyk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gdXNlck1lZGlhRXJyb3IoZXJyb3IpCi0gICAgewotICAgICAg
ICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgn
ZGVuaWVkJyk7Ci0gICAgfQotCi0gICAgdmFyIGNvbnN0cmFpbnRzID0geyBhdWRpbzogZmFsc2Us
IHZpZGVvOiB0cnVlfTsKLSAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYShj
b25zdHJhaW50cykKLSAgICAgICAgLnRoZW4oZ290VXNlck1lZGlhKS4KLSAgICAgICAgY2F0Y2go
dXNlck1lZGlhRXJyb3IpOwotPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>