Vdwonload

得到的音视频可用我的软件进行批量合并音视频···

当前为 2022-07-28 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Vdwonload
  3. // @name:zh-CN 下载器(个人使用)
  4. // @namespace http://tampermonkey.net/
  5. // @version 0.3
  6. // @description 得到的音视频可用我的软件进行批量合并音视频···
  7. // @author 浣熊
  8. // @match *://*/*
  9. // @icon data:image/png;base64,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
  10. // @grant none
  11. // @run-at document-start
  12. // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js
  13. // @license https://github.com/1024Vip/Vdownload/blob/main/LICENSE
  14. // ==/UserScript==
  15.  
  16. (function() {
  17. window.autoDownload = 0;
  18. window.isComplete = 0;
  19. window.audio = [];
  20. window.video = [];
  21. window.downloadAll = 0;
  22. window.quickPlay = 1.0;
  23. var isDelTabPage = 0; //1关闭;
  24. var downloadName = document.title;
  25.  
  26. $(function () {
  27. if (document.querySelector('video') === null && 1 === 1)
  28. return;
  29. if (location.href.indexOf('51moot') > 0) {
  30. window.onblur = null;
  31. if (document.querySelector('video') !== null) {
  32. downloadName = $('.vedio-play-nav ul li').last().get(0).innerText
  33. // document.querySelector('video').playbackRate = 16.0;
  34. }
  35. }
  36. $('body').prepend(`
  37. <div class="aside-nav bounceInUp animated no-filter" id="VdownLoad-nav">
  38. <label for="" class="aside-menu" title="按住拖动">Videos</label>
  39. <a href="javascript:void(0)" title="本次关闭" onclick="$('#VdownLoad-nav').slideUp()"
  40. class="menu-item menu-line menu-first">本次<br>关闭</a>
  41. <a href="javascript:void(0)" id="vdown0" title="缓存进度条完成时,自动下载视频"
  42. class="menu-item menu-line menu-second">下载<br>视频</a>
  43. <a href="javascript:void(0)" id="vdown1" title="缓存进度条完成时,自动下载视频,并自动关闭当前页"
  44. class="menu-item menu-line menu-third">下载后<br>关闭</a>
  45. <a href="javascript:void(0)" title="设置播放速度" id="SetplaybackRate"
  46. class="menu-item menu-line menu-fourth">设置<br>速度</a>
  47. </div>
  48. `)
  49. $(document).on('click', '#SetplaybackRate', () => { SetplaybackRate(event) })
  50. $(document).on('click', '#vdown0', () => { Vdown(0) })
  51. $(document).on('click', '#vdown1', () => { Vdown(1) })
  52. function styleInject(css, ref) {
  53. var insertAt, head, style;
  54. void 0 === ref && (ref = {}), insertAt = ref.insertAt, css && "undefined" != typeof document && (head = document.head || document.getElementsByTagName("head")[0],
  55. (style = document.createElement("style")).type = "text/css", "top" === insertAt && head.firstChild ? head.insertBefore(style, head.firstChild) : head.appendChild(style),
  56. style.styleSheet ? style.styleSheet.cssText = css : style.appendChild(document.createTextNode(css)));
  57. }
  58. var css_asd1 = `
  59. .div_play {
  60. background-color: #f34444;
  61. opacity: .8;
  62. padding: 10px;
  63. border-radius: 10px;
  64. position: fixed;
  65. z-index: 999999;
  66. }
  67. html .aside-nav {
  68. -ms-text-size-adjust: 100%;
  69. -webkit-text-size-adjust: 100%;
  70. -webkit-font-smoothing: antialiased;
  71. font-size: 62.5%
  72. }
  73.  
  74. body .aside-nav {
  75. font-family: "Helvetica Neue", Helvetica, "Microsoft YaHei", Arial, sans-serif;
  76. margin: 0;
  77. font-size: 1.6rem;
  78. color: #4e546b
  79. }
  80.  
  81. .aside-nav {
  82. position: fixed;
  83. bottom: 0;
  84. left: -47px;
  85. width: 260px;
  86. height: 260px;
  87. -webkit-filter: url(#goo);
  88. filter: url(#goo);
  89. -ms-user-select: none;
  90. -moz-user-select: none;
  91. -webkit-user-select: none;
  92. user-select: none;
  93. opacity: .75;
  94. z-index: 99999
  95. }
  96.  
  97. .aside-nav.no-filter {
  98. -webkit-filter: none;
  99. filter: none
  100. }
  101.  
  102. .aside-nav .aside-menu {
  103. position: absolute;
  104. width: 70px;
  105. height: 70px;
  106. -webkit-border-radius: 50%;
  107. border-radius: 50%;
  108. background: #f34444;
  109. left: -95px;
  110. top: 0;
  111. right: 0;
  112. bottom: 0;
  113. margin: auto;
  114. text-align: center;
  115. line-height: 70px;
  116. color: #fff;
  117. font-size: 20px;
  118. z-index: 1;
  119. cursor: move
  120. }
  121.  
  122. .aside-nav .menu-item {
  123. position: absolute;
  124. width: 60px;
  125. height: 60px;
  126. background-color: #ff7676;
  127. left: -95px;
  128. top: 0;
  129. right: 0;
  130. bottom: 0;
  131. margin: auto;
  132. line-height: 60px;
  133. text-align: center;
  134. -webkit-border-radius: 50%;
  135. border-radius: 50%;
  136. text-decoration: none;
  137. color: #fff;
  138. -webkit-transition: background .5s, -webkit-transform .6s;
  139. transition: background .5s, -webkit-transform .6s;
  140. -moz-transition: transform .6s, background .5s, -moz-transform .6s;
  141. transition: transform .6s, background .5s;
  142. transition: transform .6s, background .5s, -webkit-transform .6s, -moz-transform .6s;
  143. font-size: 14px;
  144. -webkit-box-sizing: border-box;
  145. -moz-box-sizing: border-box;
  146. box-sizing: border-box
  147. }
  148.  
  149. .aside-nav .menu-item:hover {
  150. background: #a9c734
  151. }
  152.  
  153. .aside-nav .menu-line {
  154. line-height: 20px;
  155. padding-top: 10px
  156. }
  157.  
  158. .aside-nav:hover {
  159. opacity: 1
  160. }
  161.  
  162. .aside-nav:hover .aside-menu {
  163. -webkit-animation: jello 1s;
  164. -moz-animation: jello 1s;
  165. animation: jello 1s
  166. }
  167.  
  168. .aside-nav:hover .menu-first {
  169. -webkit-transform: translate3d(0, -135%, 0);
  170. -moz-transform: translate3d(0, -135%, 0);
  171. transform: translate3d(0, -135%, 0)
  172. }
  173.  
  174. .aside-nav:hover .menu-second {
  175. -webkit-transform: translate3d(120%, -70%, 0);
  176. -moz-transform: translate3d(120%, -70%, 0);
  177. transform: translate3d(120%, -70%, 0)
  178. }
  179.  
  180. .aside-nav:hover .menu-third {
  181. -webkit-transform: translate3d(120%, 70%, 0);
  182. -moz-transform: translate3d(120%, 70%, 0);
  183. transform: translate3d(120%, 70%, 0)
  184. }
  185.  
  186. .aside-nav:hover .menu-fourth {
  187. -webkit-transform: translate3d(0, 135%, 0);
  188. -moz-transform: translate3d(0, 135%, 0);
  189. transform: translate3d(0, 135%, 0)
  190. }
  191.  
  192. @-webkit-keyframes jello {
  193.  
  194. from,
  195. 11.1%,
  196. to {
  197. -webkit-transform: none;
  198. transform: none
  199. }
  200.  
  201. 22.2% {
  202. -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
  203. transform: skewX(-12.5deg) skewY(-12.5deg)
  204. }
  205.  
  206. 33.3% {
  207. -webkit-transform: skewX(6.25deg) skewY(6.25deg);
  208. transform: skewX(6.25deg) skewY(6.25deg)
  209. }
  210.  
  211. 44.4% {
  212. -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
  213. transform: skewX(-3.125deg) skewY(-3.125deg)
  214. }
  215.  
  216. 55.5% {
  217. -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
  218. transform: skewX(1.5625deg) skewY(1.5625deg)
  219. }
  220.  
  221. 66.6% {
  222. -webkit-transform: skewX(-.78125deg) skewY(-.78125deg);
  223. transform: skewX(-.78125deg) skewY(-.78125deg)
  224. }
  225.  
  226. 77.7% {
  227. -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
  228. transform: skewX(0.390625deg) skewY(0.390625deg)
  229. }
  230.  
  231. 88.8% {
  232. -webkit-transform: skewX(-.1953125deg) skewY(-.1953125deg);
  233. transform: skewX(-.1953125deg) skewY(-.1953125deg)
  234. }
  235. }
  236.  
  237. @-moz-keyframes jello {
  238.  
  239. from,
  240. 11.1%,
  241. to {
  242. -moz-transform: none;
  243. transform: none
  244. }
  245.  
  246. 22.2% {
  247. -moz-transform: skewX(-12.5deg) skewY(-12.5deg);
  248. transform: skewX(-12.5deg) skewY(-12.5deg)
  249. }
  250.  
  251. 33.3% {
  252. -moz-transform: skewX(6.25deg) skewY(6.25deg);
  253. transform: skewX(6.25deg) skewY(6.25deg)
  254. }
  255.  
  256. 44.4% {
  257. -moz-transform: skewX(-3.125deg) skewY(-3.125deg);
  258. transform: skewX(-3.125deg) skewY(-3.125deg)
  259. }
  260.  
  261. 55.5% {
  262. -moz-transform: skewX(1.5625deg) skewY(1.5625deg);
  263. transform: skewX(1.5625deg) skewY(1.5625deg)
  264. }
  265.  
  266. 66.6% {
  267. -moz-transform: skewX(-.78125deg) skewY(-.78125deg);
  268. transform: skewX(-.78125deg) skewY(-.78125deg)
  269. }
  270.  
  271. 77.7% {
  272. -moz-transform: skewX(0.390625deg) skewY(0.390625deg);
  273. transform: skewX(0.390625deg) skewY(0.390625deg)
  274. }
  275.  
  276. 88.8% {
  277. -moz-transform: skewX(-.1953125deg) skewY(-.1953125deg);
  278. transform: skewX(-.1953125deg) skewY(-.1953125deg)
  279. }
  280. }
  281.  
  282. @keyframes jello {
  283.  
  284. from,
  285. 11.1%,
  286. to {
  287. -webkit-transform: none;
  288. -moz-transform: none;
  289. transform: none
  290. }
  291.  
  292. 22.2% {
  293. -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
  294. -moz-transform: skewX(-12.5deg) skewY(-12.5deg);
  295. transform: skewX(-12.5deg) skewY(-12.5deg)
  296. }
  297.  
  298. 33.3% {
  299. -webkit-transform: skewX(6.25deg) skewY(6.25deg);
  300. -moz-transform: skewX(6.25deg) skewY(6.25deg);
  301. transform: skewX(6.25deg) skewY(6.25deg)
  302. }
  303.  
  304. 44.4% {
  305. -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
  306. -moz-transform: skewX(-3.125deg) skewY(-3.125deg);
  307. transform: skewX(-3.125deg) skewY(-3.125deg)
  308. }
  309.  
  310. 55.5% {
  311. -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
  312. -moz-transform: skewX(1.5625deg) skewY(1.5625deg);
  313. transform: skewX(1.5625deg) skewY(1.5625deg)
  314. }
  315.  
  316. 66.6% {
  317. -webkit-transform: skewX(-.78125deg) skewY(-.78125deg);
  318. -moz-transform: skewX(-.78125deg) skewY(-.78125deg);
  319. transform: skewX(-.78125deg) skewY(-.78125deg)
  320. }
  321.  
  322. 77.7% {
  323. -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
  324. -moz-transform: skewX(0.390625deg) skewY(0.390625deg);
  325. transform: skewX(0.390625deg) skewY(0.390625deg)
  326. }
  327.  
  328. 88.8% {
  329. -webkit-transform: skewX(-.1953125deg) skewY(-.1953125deg);
  330. -moz-transform: skewX(-.1953125deg) skewY(-.1953125deg);
  331. transform: skewX(-.1953125deg) skewY(-.1953125deg)
  332. }
  333. }
  334.  
  335. .animated {
  336. -webkit-animation-duration: 1s;
  337. -moz-animation-duration: 1s;
  338. animation-duration: 1s;
  339. -webkit-animation-fill-mode: both;
  340. -moz-animation-fill-mode: both;
  341. animation-fill-mode: both
  342. }
  343.  
  344. @-webkit-keyframes bounceInUp {
  345.  
  346. from,
  347. 60%,
  348. 75%,
  349. 90%,
  350. to {
  351. -webkit-animation-timing-function: cubic-bezier(0.215, .61, .355, 1);
  352. animation-timing-function: cubic-bezier(0.215, .61, .355, 1)
  353. }
  354.  
  355. from {
  356. opacity: 0;
  357. -webkit-transform: translate3d(0, 800px, 0);
  358. transform: translate3d(0, 800px, 0)
  359. }
  360.  
  361. 60% {
  362. opacity: 1;
  363. -webkit-transform: translate3d(0, -20px, 0);
  364. transform: translate3d(0, -20px, 0)
  365. }
  366.  
  367. 75% {
  368. -webkit-transform: translate3d(0, 10px, 0);
  369. transform: translate3d(0, 10px, 0)
  370. }
  371.  
  372. 90% {
  373. -webkit-transform: translate3d(0, -10px, 0);
  374. transform: translate3d(0, -10px, 0)
  375. }
  376.  
  377. to {
  378. -webkit-transform: translate3d(0, 0, 0);
  379. transform: translate3d(0, 0, 0)
  380. }
  381. }
  382.  
  383. @-moz-keyframes bounceInUp {
  384.  
  385. from,
  386. 60%,
  387. 75%,
  388. 90%,
  389. to {
  390. -moz-animation-timing-function: cubic-bezier(0.215, .61, .355, 1);
  391. animation-timing-function: cubic-bezier(0.215, .61, .355, 1)
  392. }
  393.  
  394. from {
  395. opacity: 0;
  396. -moz-transform: translate3d(0, 800px, 0);
  397. transform: translate3d(0, 800px, 0)
  398. }
  399.  
  400. 60% {
  401. opacity: 1;
  402. -moz-transform: translate3d(0, -20px, 0);
  403. transform: translate3d(0, -20px, 0)
  404. }
  405.  
  406. 75% {
  407. -moz-transform: translate3d(0, 10px, 0);
  408. transform: translate3d(0, 10px, 0)
  409. }
  410.  
  411. 90% {
  412. -moz-transform: translate3d(0, -5px, 0);
  413. transform: translate3d(0, -5px, 0)
  414. }
  415.  
  416. to {
  417. -moz-transform: translate3d(0, 0, 0);
  418. transform: translate3d(0, 0, 0)
  419. }
  420. }
  421.  
  422. @keyframes bounceInUp {
  423.  
  424. from,
  425. 60%,
  426. 75%,
  427. 90%,
  428. to {
  429. -webkit-animation-timing-function: cubic-bezier(0.215, .61, .355, 1);
  430. -moz-animation-timing-function: cubic-bezier(0.215, .61, .355, 1);
  431. animation-timing-function: cubic-bezier(0.215, .61, .355, 1)
  432. }
  433.  
  434. from {
  435. opacity: 0;
  436. -webkit-transform: translate3d(0, 800px, 0);
  437. -moz-transform: translate3d(0, 800px, 0);
  438. transform: translate3d(0, 800px, 0)
  439. }
  440.  
  441. 60% {
  442. opacity: 1;
  443. -webkit-transform: translate3d(0, -20px, 0);
  444. -moz-transform: translate3d(0, -20px, 0);
  445. transform: translate3d(0, -20px, 0)
  446. }
  447.  
  448. 75% {
  449. -webkit-transform: translate3d(0, 10px, 0);
  450. -moz-transform: translate3d(0, 10px, 0);
  451. transform: translate3d(0, 10px, 0)
  452. }
  453.  
  454. 90% {
  455. -webkit-transform: translate3d(0, -5px, 0);
  456. -moz-transform: translate3d(0, -5px, 0);
  457. transform: translate3d(0, -5px, 0)
  458. }
  459.  
  460. to {
  461. -webkit-transform: translate3d(0, 0, 0);
  462. -moz-transform: translate3d(0, 0, 0);
  463. transform: translate3d(0, 0, 0)
  464. }
  465. }
  466.  
  467. .bounceInUp {
  468. -webkit-animation-name: bounceInUp;
  469. -moz-animation-name: bounceInUp;
  470. animation-name: bounceInUp;
  471. -webkit-animation-delay: 1s;
  472. -moz-animation-delay: 1s;
  473. animation-delay: 1s
  474. }`;
  475. styleInject(css_asd1);
  476. function XF() {
  477. let parentID = 'VdownLoad-nav';
  478. //鼠标移动
  479. var scrollMove = function () {
  480. window.onscroll = window.onload = function () {
  481. var scrollsidebar = document.getElementById(parentID);
  482. var scrolltop = document.body.scrollTop || document.documentElement.scrollTop;
  483. startMove(
  484. parseInt(
  485. (document.documentElement.clientHeight -
  486. scrollsidebar.offsetHeight) / 2 + scrolltop
  487. )
  488. );
  489. };
  490. };
  491. //获取元素
  492. var dv = document.getElementById(parentID);
  493. var x = 0;
  494. var y = 0;
  495. var l = 0;
  496. var t = 0;
  497. var isDown = false;
  498. //鼠标按下事件
  499. dv.onmousedown = function (e) {
  500. //获取x坐标和y坐标
  501. x = e.clientX;
  502. y = e.clientY;
  503.  
  504. //获取左部和顶部的偏移量
  505. l = dv.offsetLeft;
  506. t = dv.offsetTop;
  507. //开关打开
  508. isDown = true;
  509. //设置样式
  510. dv.style.cursor = 'move';
  511. }
  512. //鼠标移动
  513. dv.onmousemove = function (e) {
  514. if (isDown == false) {
  515. return;
  516. }
  517. //获取x和y
  518. var nx = e.clientX;
  519. var ny = e.clientY;
  520. //计算移动后的左偏移量和顶部的偏移量
  521. var nl = nx - (x - l);
  522. var nt = ny - (y - t);
  523.  
  524. dv.style.left = nl + 'px';
  525. dv.style.top = nt + 'px';
  526. }
  527. //鼠标抬起事件
  528. dv.onmouseup = function () {
  529. //开关关闭
  530. isDown = false;
  531. dv.style.cursor = 'default';
  532. }
  533. };
  534. XF();
  535. const SetplaybackRate = (e) => {
  536. var pageX = e.pageX,
  537. pageY = e.pageY;
  538. let ID = 'div_play';
  539. if ($('#' + ID).length > 0) {
  540. $('#' + ID).remove();
  541. }
  542. let SD = 1;
  543. if (document.querySelector('video') !== null)
  544. SD = document.querySelector('video').playbackRate;
  545. $('body').prepend(`
  546. <div id="${ID}" class="div_play" style="display:none">
  547. <input type="number" min="0" max="16" value="${SD}" id="numPlay">
  548. <input type="button" value="取消" onclick="$('#${ID}').fadeOut(()=>$(this).parent().remove())">
  549. <input type="button" value="确定" id="playSDSure"">
  550. </div>
  551. `)
  552. $(document).on('click', '#playSDSure', () => { playSDSure('numPlay') })
  553. // onclick="playSDSure('numPlay')
  554. let py = document.getElementById(ID);
  555. $(py).fadeIn();
  556. py.style.left = pageX + 'px';
  557. py.style.top = pageY + 'px';
  558. }
  559. const playSDSure = (id) => {
  560. let val = parseFloat($('#' + id).val());
  561. val = val === 0 ? 1 : val;
  562. if (document.querySelector('video') !== null)
  563. document.querySelector('video').playbackRate = val;
  564. console.log(val);
  565. $('#' + id).parent().fadeOut(() => { $(this).remove() });
  566. }
  567. const Vdown = (isDel) => {
  568. isDelTabPage = isDel;
  569. window.autoDownload = 1;
  570. }
  571. })
  572.  
  573.  
  574.  
  575.  
  576. const _endOfStream = window.MediaSource.prototype.endOfStream
  577. window.MediaSource.prototype.endOfStream = function () {
  578. window.isComplete = 1;
  579. return _endOfStream.apply(this, arguments)
  580. }
  581. window.MediaSource.prototype.endOfStream.toString = function () {
  582. // console.log('endOfStream hook is detecting!');
  583. return _endOfStream.toString();
  584. }
  585.  
  586. const _addSourceBuffer = window.MediaSource.prototype.addSourceBuffer
  587. window.MediaSource.prototype.addSourceBuffer = function (mime) {
  588. // console.log("MediaSource.addSourceBuffer ", mime)
  589. if (mime.toString().indexOf('audio') !== -1) {
  590. window.audio = [];
  591. // console.log('audio array cleared.');
  592. } else if (mime.toString().indexOf('video') !== -1) {
  593. window.video = [];
  594. // console.log('video array cleared.');
  595. }
  596. let sourceBuffer = _addSourceBuffer.call(this, mime)
  597. const _append = sourceBuffer.appendBuffer
  598. sourceBuffer.appendBuffer = function (buffer) {
  599. // console.log(mime, buffer);
  600. if (mime.toString().indexOf('audio') !== -1) {
  601. window.audio.push(buffer);
  602. } else if (mime.toString().indexOf('video') !== -1) {
  603. window.video.push(buffer)
  604. }
  605. _append.call(this, buffer)
  606. }
  607.  
  608. sourceBuffer.appendBuffer.toString = function () {
  609. // console.log('appendSourceBuffer hook is detecting!');
  610. return _append.toString();
  611. }
  612. return sourceBuffer
  613. }
  614.  
  615. window.MediaSource.prototype.addSourceBuffer.toString = function () {
  616. // console.log('addSourceBuffer hook is detecting!');
  617. return _addSourceBuffer.toString();
  618. }
  619.  
  620. function download() {
  621. let a = document.createElement('a');
  622. a.href = window.URL.createObjectURL(new Blob(window.audio));
  623. a.download = 'audio_' + downloadName + '.mp4';
  624. a.click();
  625. a.href = window.URL.createObjectURL(new Blob(window.video));
  626. a.download = 'video_' + downloadName + '.mp4';
  627. a.click();
  628. window.downloadAll = 0;
  629. window.isComplete = 0;
  630. window.autoDownload = 0;
  631. if (isDelTabPage === 1) {
  632. closePage();
  633. }
  634. }
  635. function closePage() {
  636. if (navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Chrome") != -1) {
  637. window.location.href = "about:blank";
  638. window.close();
  639. } else {
  640. window.opener = null;
  641. window.open("", "_self");
  642. window.close();
  643. }
  644. }
  645. setInterval(() => {
  646. if (window.downloadAll === 1) {
  647. download();
  648. }
  649. }, 2000);
  650.  
  651. // setInterval(() => {
  652. // if(window.quickPlay !==1.0){
  653. // document.querySelector('video').playbackRate = window.quickPlay;
  654. // }
  655. //
  656. // }, 2000);
  657.  
  658. // if (window.autoDownload === 1) {
  659. let autoDownInterval = setInterval(() => {
  660. if (window.isComplete === 1 && window.autoDownload === 1) {
  661. download();
  662. }
  663. }, 2000);
  664. // }
  665.  
  666. (function (that) {
  667. let removeSandboxInterval = setInterval(() => {
  668. if (that.document.querySelectorAll('iframe')[0] !== undefined) {
  669. that.document.querySelectorAll('iframe').forEach((v, i, a) => {
  670. let ifr = v;
  671. // ifr.sandbox.add('allow-popups');
  672. ifr.removeAttribute('sandbox');
  673. const parentElem = that.document.querySelectorAll('iframe')[i].parentElement;
  674. a[i].remove();
  675. parentElem.appendChild(ifr);
  676. });
  677. clearInterval(removeSandboxInterval);
  678. }
  679. }, 1000);
  680. })(window);
  681. })();