newrecha 8a546fb1d2 1
2024-09-19 11:21:50 +08:00

2796 lines
94 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang='zh-CN'>
<head>
<title>lib/ttkx.jar · tvkj/feilong - Gitee.com</title>
<meta content='on' http-equiv='x-dns-prefetch-control'>
<link href='//e.gitee.com' rel='dns-prefetch'>
<link href='//files.gitee.com' rel='dns-prefetch'>
<link href='//toscode.gitee.com' rel='dns-prefetch'>
<link href='https://cn-assets.gitee.com' rel='dns-prefetch'>
<link href='https://portrait.gitee.com' rel='dns-prefetch'>
<link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://cn-assets.gitee.com/assets/favicon-9007bd527d8a7851c8330e783151df58.ico" />
<link rel="canonical" href="https://gitee.com/tvkj/tw" />
<meta content='gitee.com/tvkj/tw git https://gitee.com/tvkj/tw.git' name='go-import'>
<meta charset='utf-8'>
<meta content='always' name='referrer'>
<meta content='Gitee' property='og:site_name'>
<meta content='Object' property='og:type'>
<meta content='https://gitee.com/tvkj/tw/blob/main/lib/ttkx.jar' property='og:url'>
<meta content='https://gitee.com/static/images/logo_themecolor.png' itemprop='image' property='og:image'>
<meta content='lib/ttkx.jar · tvkj/feilong - Gitee.com' itemprop='name' property='og:title'>
<meta content='q1qq222q2q22q2' property='og:description'>
<meta content='码云,Gitee,代码托管,Git,Git@OSC,Gitee.com,开源,内源,项目管理,版本控制,开源代码,代码分享,项目协作,开源项目托管,免费代码托管,Git代码托管,Git托管服务' name='Keywords'>
<meta content='q1qq222q2q22q2' itemprop='description' name='Description'>
<meta content='pc,mobile' name='applicable-device'>
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="KYc08CwDAH5k7CMD6AFHrIT5FSfHyPqHC7eJsy7/5d79rQ/LBOz6NeE9hIfQCZwq54xf5d+O1X9NnggycuYM7A==" />
<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/application-b9588914bf159c2e183477afabb2c49f.css" />
<script>
//<![CDATA[
window.gon = {};gon.locale="zh-CN";gon.sentry_dsn=null;gon.baidu_register_hm_push=null;gon.sensor={"server_url":"https://haveaniceday.gitee.com:3443/sa?project=production","sdk_url":"https://cn-assets.gitee.com/assets/static/sensors-sdk-2f850fa5b654ad55ac0993fda2f37ba5.js","page_type":"其他"};gon.info={"controller_path":"blob","action_name":"show","current_user":false};gon.tour_env={"current_user":null,"action_name":"show","original_url":"https://gitee.com/tvkj/tw/blob/main/lib/ttkx.jar","controller_path":"blob"};gon.http_clone="https://gitee.com/tvkj/tw.git";gon.user_project="tvkj/tw";gon.manage_branch="管理分支";gon.manage_tag="管理标签";gon.enterprise_id=0;gon.create_reaction_path="/tvkj/tw/reactions";gon.ipipe_base_url="https://go-api.gitee.com";gon.artifact_base_url="https://go-repo.gitee.com";gon.gitee_go_remote_url="https://go.gitee.com/assets";gon.gitee_go_active=false;gon.current_project_is_mirror=false;gon.show_repo_comment=false;gon.diagram_viewer_path="https://diagram-viewer.giteeusercontent.com";gon.ref="main";
//]]>
</script>
<script src="https://cn-assets.gitee.com/assets/static/sensor-6269b9ad61bbcdaff20078e5dcff62d5.js"></script>
<script src="https://cn-assets.gitee.com/assets/static/sentry-5.1.0-a823fb0be1b61c5d7ca4a89f0536cb0a.js"></script>
<script src="https://cn-assets.gitee.com/assets/application-41226c6a36ee674dcabaa6eb9b9e2a26.js"></script>
<script src="https://cn-assets.gitee.com/assets/lib/jquery.timeago.zh-CN-4a4818e98c1978d2419ab19fabcba740.js"></script>
<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/projects/application-46b94c31ba11ae8c37eacce2bdb5603e.css" />
<script src="https://cn-assets.gitee.com/assets/projects/app-9e2d277091428536167de1d8fba0e8cb.js"></script>
<script type='text/x-mathjax-config'>
MathJax.Hub.Config({
tex2jax: {
inlineMath: [['$','$'], ['\\(','\\)']],
displayMath: [["$$","$$"],["\\[","\\]"]],
processEscapes: true,
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
ignoreClass: "container|files",
processClass: "markdown-body"
}
});
</script>
<script src="https://cn-assets.gitee.com/uploads/resources/MathJax-2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script>
(function () {
var messages = {
'zh-CN': {
addResult: '增加 <b>{term}</b>',
count: '已选择 {count}',
maxSelections: '最多 {maxCount} 个选择',
noResults: '未找到结果',
serverError: '连接服务器时发生错误'
},
'zh-TW': {
addResult: '增加 <b>{term}</b>',
count: '已選擇 {count}',
maxSelections: '最多 {maxCount} 個選擇',
noResults: '未找到結果',
serverError: '連接服務器時發生錯誤'
}
}
if (messages[gon.locale]) {
$.fn.dropdown.settings.message = messages[gon.locale]
}
}());
</script>
<script>
var userAgent = navigator.userAgent;
var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1;
if(isLessIE11){
var can_access = ""
if (can_access != "true"){
window.location.href = "/incompatible.html";
}
}
document.addEventListener("error", function (ev) {
var elem = ev.target;
if (elem.tagName.toLowerCase() === 'img') {
elem.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAAAAACIM/FCAAACh0lEQVR4Ae3ch5W0OgyG4dt/mQJ2xgQPzJoM1m3AbALrxzrf28FzsoP0HykJEEAAAUQTBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEkKK0789+GK/I2ezfQB522PnS1qc8pGgXvr4tE4aY0XOUWlGImThWgyCk6DleixzE7qwBkg/MGiDPlVVAyp1VQGrPKiACDhFI6VkF5LmzCki+sg7IwDoglnVAil0IMkeG9CyUiwsxLFUVFzJJOQaKCjFCDN9RXMjIX7W6ztZXZDKKCyn8sWJvH+nca7WHDN9lROlAliPH9iRKCPI4cswFJQWxB46toLQgQ9jhn5QYZA9DOkoMUoQde5YapAxDWkoNYsOQR3KQd9CxUnIQF4S49CB9ENKlBxmDEKsFUgMCCCCAAHIrSF61f6153Ajy8nyiPr8L5MXnmm4CyT2fzN4DUvHZ+ntA2tOQBRBAAAEEEEAAAQQQ7ZBaC6TwSiDUaYHQ2yuB0MN+ft+43whyrs4rgVCjBUKTFshLC6TUAjGA3AxSaYFYLZBOC2RUAsk8h5qTg9QcbEoOsoQhQ2qQhsO5xCD5dgB5JQaZ+KBKGtKecvR81Ic0ZDjByKdDx0rSEDZ/djQbH+bkIdvfJFm98BfV8hD2zprfVdlu9PxVeyYAkciREohRAplJCaRSAplJCcQogTjSAdlyHRBvSAekJR0QRzogA+mADJkOiCPSAPEtqYBshlRAXC43hxix2QiOuEZkVERykGyNo9idIZKE0HO7XrG6OiMShlDWjstVzdPgXtUH9v0CEidAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQP4HgjZxTpdEii0AAAAASUVORK5CYII=";
}
}, true);
</script>
</head>
<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script>
var title = document.title.replace(/( - Gitee| - 码云)$/, '')
imgUrl = '';
document.addEventListener('DOMContentLoaded', function(event) {
var imgUrlEl = document.querySelector('.readme-box .markdown-body > img, .readme-box .markdown-body :not(a) > img');
imgUrl = imgUrlEl && imgUrlEl.getAttribute('src');
if (!imgUrl) {
imgUrlEl = document.querySelector('meta[itemprop=image]');
imgUrl = imgUrlEl && imgUrlEl.getAttribute('content');
imgUrl = imgUrl || "https://gitee.com/static/images/logo_themecolor.png";
}
wx.config({
debug: false,
appId: "wxff219d611a159737",
timestamp: "1725113859",
nonceStr: "6294095784909197e0de8dadaa12f8f3",
signature: "6958c8e70490f36bec8d16c1af206834dce74e2d",
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage'
]
});
wx.ready(function () {
wx.onMenuShareTimeline({
title: title, // 分享标题
link: "https://gitee.com/tvkj/tw/blob/main/lib/ttkx.jar", // 分享链接该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: imgUrl // 分享图标
});
wx.onMenuShareAppMessage({
title: title, // 分享标题
link: "https://gitee.com/tvkj/tw/blob/main/lib/ttkx.jar", // 分享链接该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
desc: document.querySelector('meta[name=Description]').getAttribute('content'),
imgUrl: imgUrl // 分享图标
});
});
wx.error(function(res){
console.error('err', res)
});
})
</script>
<body class='git-project lang-zh-CN'>
<header class='common-header fixed noborder' id='git-header-nav'>
<div class='ui container'>
<div class='ui menu header-menu header-container'>
<div class='git-nav-expand-bar'>
<i class='iconfont icon-mode-table'></i>
</div>
<div class='gitee-nav__sidebar'>
<div class='gitee-nav__sidebar-container'>
<div class='gitee-nav__sidebar-top'>
<div class='gitee-nav__avatar-box'></div>
<div class='gitee-nav__buttons-box'>
<a class="ui button small fluid orange" href="/login">登录</a>
<a class="ui button small fluid basic is-register" href="/signup">注册</a>
</div>
</div>
<div class='gitee-nav__sidebar-middle'>
<div class='gitee-nav__sidebar-list'>
<ul>
<li class='gitee-nav__sidebar-item'>
<a href="/explore"><i class='iconfont icon-ic-discover'></i>
<span class='gitee-nav__sidebar-name'>开源</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/enterprises"><i class='iconfont icon-ic-enterprise'></i>
<span class='gitee-nav__sidebar-name'>企业版</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/education"><i class='iconfont icon-ic-education'></i>
<span class='gitee-nav__sidebar-name'>高校版</span>
</a></li>
<li class='gitee-nav__sidebar-item split-line'></li>
<li class='gitee-nav__sidebar-item'>
<a href="/search"><i class='iconfont icon-ic-search'></i>
<span class='gitee-nav__sidebar-name'>搜索</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/help"><i class='iconfont icon-help-circle'></i>
<span class='gitee-nav__sidebar-name'>帮助中心</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/terms"><i class='iconfont icon-file'></i>
<span class='gitee-nav__sidebar-name'>使用条款</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/about_us"><i class='iconfont icon-issuepx'></i>
<span class='gitee-nav__sidebar-name'>关于我们</span>
</a></li>
</ul>
</div>
</div>
<div class='gitee-nav__sidebar-bottom'>
<div class='gitee-nav__sidebar-close-button'>
<i class='fa fa-angle-double-left'></i>
</div>
</div>
</div>
</div>
<!-- /todo 10周年活动结束后 恢复 -->
<div class='item gitosc-logo'>
<a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline image' height='28' src='/static/images/logo.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='95'>
<img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline black image' height='28' src='/static/images/logo-black.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='95'>
</a></div>
<a title="开源" class="item " href="/explore">开源
</a><a title="企业版" class="item " sa_evt="click_GiteeCommunity_tab_En" href="/enterprises">企业版
</a><a title="高校版" class="item " href="/education">高校版
</a><a title="私有云" class="item" target="_blank" href="https://gitee.cn?utm_source=giteecom">私有云
</a><a title="Gitee AI" class="item mr-3" id="gitee-blog" target="_blank" href="https://ai.gitee.com/?utm_sources=site_nav">Gitee AI
<sup class='ui red label'>
NEW
</sup>
</a><div class='center responsive-logo'>
<a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline image' height='24' src='/static/images/logo.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='85'>
<img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline black image' height='24' src='/static/images/logo-black.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='85'>
</a></div>
<div class='right menu userbar right-header' id='git-nav-user-bar'>
<form class="ui item" id="navbar-search-form" data-text-require="搜索关键字不能少于1个" data-text-filter="搜索格式不正确" action="/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
<input type="hidden" name="type" id="navbar-search-type" />
<input type="hidden" name="fork_filter" id="fork_filter" value="on" />
<div class='ui search header-search'>
<input type="text" name="q" id="navbar-search-input" value="" class="prompt" placeholder="搜开源" />
</div>
</form>
<script>
var can_search_in_repo = 1,
repo = "VFhwTk5VOVVWWGhOYWxab1RucFplbHBuUFQxaE56WXpaZz09YTc2M2Y=",
reponame = "tvkj/tw";
$(function() {
var $search = $('#navbar-search-form .ui.search');
$search.search({
apiSettings: {
url: '/search/relative_project?q={query}',
onResponse: function (res) {
if (res && res.status === 200 && res.data) {
var query = htmlSafe($search.search('get value'));
res.data.map(function (item) {
item.path_ns = '/' + item.path_ns;
item.icon = 'iconfont icon-project-public';
});
res.data.unshift({
name_ns: "在全站搜索 <b class='hl'>" + query +"</b> 相关项目",
path_ns: '/search?fork_filter=on&q=' + query,
icon: 'iconfont icon-search'
});
return res;
} else {
return { data: [] };
}
}
},
fields: {
results: 'data',
description: 'name_ns',
url: 'path_ns',
icon: 'icon'
},
minCharacters: 1,
maxResults: 10,
searchDelay: 250,
showNoResults: false,
transition: 'fade'
});
});
</script>
<div class='ui item' id='feature-update-notice'>
<div class='notice-update-icon'>
<a class="notice-update-popup click-knowed" title="" href="javascript:void(0)"><img alt="功能更新" title="" class="bubl_icon bubl-off-icon" src="https://cn-assets.gitee.com/assets/bulb_off-24ee940be20998aace89a3f040cbc704.svg" />
<img alt="功能更新" title="" class="bubl_icon bubl-on-icon" src="https://cn-assets.gitee.com/assets/bulb_on-3986b1dc417285398e3d15671bd8f261.svg" />
</a></div>
<div class='feature-update-notice-panel menu'>
<div class='notice-img'>
<img alt="" title="" class="notice-img-show" src="" />
</div>
<div class='notice-update-title'></div>
<div class='notice-update-des'></div>
<div class='notice-btn-list d-flex-between'>
<button name="button" type="button" class="ui basic orange button btn-notice btn-knowed click-knowed" style="margin-right: 0">我知道了</button>
<a class="ui button orange btn-notice btn-details click-knowed" target="_blank" href="">查看详情</a>
</div>
</div>
</div>
<a class="item git-nav-user__login-item" sa_evt="login_show" sa_referrer_url="" sa_referrer_action="站导航右上角-登录按钮" sa_referrer_type="其他" href="/login">登录
</a><a class="item git-nav-user__register-item" sa_evt="register_show" sa_referrer_url="" sa_referrer_action="站导航右上角-注册按钮" sa_referrer_type="其他" href="/signup">注册
</a><script>
$('.destroy-user-session').on('click', function() {
$.cookie('access_token', null, { path: '/' });
})
</script>
</div>
</div>
</div>
</header>
<script>
Gitee.initNavbar()
Gitee.initRepoRemoteWay()
$.cookie('user_locale',null)
</script>
<script>
var userAgent = navigator.userAgent;
var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1;
if(isLessIE11){
var can_access = ""
if (can_access != "true"){
window.location.href = "/incompatible.html";
}
}
</script>
<div class='fixed-notice-infos'>
<div class='all-messages'>
<div class='ui info message' id='git-bulletin'>
<a href=https://gitee.com/oschina/Official target='_blank'>《关于清理 Gitee 水军刷 Star 行为公告》</a>
<i class='icon remove' id='remove-bulletin'></i>
</div>
</div>
<div class='ui container'>
<div class='flash-messages' id='messages-container'></div>
</div>
<script>
(function() {
$(function() {
var $error_box, alertTip, notify_content, notify_options, template;
template = '<div data-notify="container" class="ui {0} message" role="alert">' + '<i data-notify="dismiss" class="close icon"></i>' + '<span data-notify="message">{2}</span>' + '</div>';
notify_content = null;
notify_options = {};
alertTip = '';
$error_box = $(".flash_error.flash_error_box");
if (notify_options.type === 'error' && $error_box.length > 0 && !$.isEmptyObject(notify_content.message)) {
if (notify_content.message === 'captcha_fail') {
alertTip = "验证码不正确";
} else if (notify_content.message === 'captcha_expired') {
alertTip = "验证码已过期,请点击刷新";
} else if (notify_content.message === 'not_found_in_database') {
alertTip = "帐号或者密码错误";
} else if (notify_content.message === 'not_found_and_show_captcha') {
alertTip = "帐号或者密码错误";
} else if (notify_content.message === 'phone_captcha_fail') {
alertTip = "手机验证码不通过";
} else {
alertTip = notify_content.message;
}
return $error_box.html(alertTip).show();
} else if (notify_content) {
if ("show" === 'third_party_binding') {
return $('#third_party_binding-message').html(notify_content.message).addClass('ui message red');
}
notify_options.delay = 3000;
notify_options.template = template;
notify_options.offset = {
x: 10,
y: 30
};
notify_options.element = '#messages-container';
return $.notify(notify_content, notify_options);
}
});
}).call(this);
</script>
</div>
<script>
(function() {
$(function() {
var setCookie;
setCookie = function(name, value) {
$.cookie(name, value, {
path: '/',
expires: 365
});
};
$('#remove-bulletin, #remove-bulletin-dashboard').on('click', function() {
setCookie('remove_bulletin', "gitee-maintain-1724325654");
$('#git-bulletin').hide();
});
$('#remove-member-bulletin').on('click', function() {
setCookie('remove_member_bulletin', "gitee_member_bulletin");
$(this).parent().hide();
});
return $('#remove-gift-bulletin').on('click', function() {
setCookie('remove_gift_bulletin', "gitee-gift-bulletin");
$(this).parent().hide();
});
});
}).call(this);
</script>
<script>
function closeMessageBanner(pthis, type, val) {
var json = {}
val = typeof val === 'undefined' ? null : val
$(pthis).parent().remove()
if (type === 'out_of_enterprise_member') {
json = {type: type, data: val}
} else if (type === 'enterprise_overdue') {
json = {type: type, data: val}
}
$.post('/profile/close_flash_tip', json)
}
</script>
<div class='site-content'>
<div class='git-project-header'>
<div class='fixed-notice-infos'>
<div class='ui info icon floating message green' id='fetch-ok' style='display: none'>
<div class='content'>
<div class='header status-title'>
<i class='info icon status-icon'></i>
代码拉取完成,页面将自动刷新
</div>
</div>
</div>
<div class='ui info icon floating message error' id='fetch-error' style='display: none'>
<div class='content'>
<div class='header status-title'>
<i class='info icon status-icon'></i>
<span class='error_msg'></span>
</div>
</div>
</div>
</div>
<div class='ui container'>
<div class='git-project-header-details'>
<div class='git-project-header-container'>
<div class='git-project-header-actions'>
<div class='ui tiny modal project-donate-modal' id='project-donate-modal'>
<i class='iconfont icon-close close'></i>
<div class='header'>捐赠</div>
<div class='content'>
捐赠前请先登录
</div>
<div class='actions'>
<a class='ui blank button cancel'>取消</a>
<a class='ui orange ok button' href='/login'>前往登录</a>
</div>
</div>
<div class='ui small modal wepay-qrcode'>
<i class='iconfont icon-close close'></i>
<div class='header'>
扫描微信二维码支付
<span class='wepay-cash'></span>
</div>
<div class='content weqcode-center'>
<img id='wepay-qrcode' src=''>
</div>
<div class='actions'>
<div class='ui cancel blank button'>取消</div>
<div class='ui ok orange button'>支付完成</div>
</div>
</div>
<div class='ui mini modal' id='confirm-alipay-modal'>
<div class='header'>支付提示</div>
<div class='content'>
将跳转至支付宝完成支付
</div>
<div class='actions'>
<div class='ui approve orange button'>确定</div>
<div class='ui blank cancel button'>取消</div>
</div>
</div>
<span class='ui buttons basic watch-container'>
<div class='ui dropdown button js-project-watch' data-watch-type='unwatch'>
<input type='hidden' value=''>
<i class='iconfont icon-watch'></i>
<div class='text'>
Watch
</div>
<i class='dropdown icon'></i>
<div class='menu'>
<a data-value="unwatch" class="item" sa_evt="loginInform_show" sa_referrer_url="" sa_referrer_action="Watch" sa_referrer_type="其他" rel="nofollow" data-method="post" href="/tvkj/tw/unwatch"><i class='iconfont icon-msg-read'></i>
不关注
</a><a data-value="watching" class="item" sa_evt="loginInform_show" sa_referrer_url="" sa_referrer_action="Watch" sa_referrer_type="其他" rel="nofollow" data-method="post" href="/tvkj/tw/watch"><i class='iconfont icon-msg-read'></i>
关注所有动态
</a><a data-value="releases_only" class="disabled item" sa_evt="loginInform_show" sa_referrer_url="" sa_referrer_action="Watch" sa_referrer_type="其他" rel="nofollow" data-method="post" href="/tvkj/tw/release_only_watch"><i class='iconfont icon-msg-read'></i>
仅关注版本发行动态
</a><a data-value="ignoring" class="item" sa_evt="loginInform_show" sa_referrer_url="" sa_referrer_action="Watch" sa_referrer_type="其他" rel="nofollow" data-method="post" href="/tvkj/tw/ignoring_watch"><i class='iconfont icon-msg-read'></i>
关注但不提醒动态
</a></div>
</div>
<style>
.js-project-watch .text .iconfont {
display: none; }
.js-project-watch a, .js-project-watch a:hover {
color: #000; }
.js-project-watch .item > .iconfont {
visibility: hidden;
margin-left: -10px; }
.js-project-watch .selected .iconfont {
visibility: visible; }
.js-project-watch .menu {
margin-top: 4px !important; }
</style>
<script>
$('.js-project-watch').dropdown({
action: 'select',
onChange: function(value, text, $selectedItem) {
var type = value === 'unwatch' ? 'Watch' : 'Watching';
$(this).children('.text').text(type);
$(this).dropdown('set selected', value)
}
});
</script>
<a class="ui button action-social-count" title="2" href="/tvkj/tw/watchers">2
</a></span>
<span class='basic buttons star-container ui'>
<a class="ui button star" sa_evt="loginInform_show" sa_referrer_url="" sa_referrer_action="Star" sa_referrer_type="其他" href="/login"><i class='iconfont icon-star'></i>
Star
</a><a class="ui button action-social-count " title="9" href="/tvkj/tw/stargazers">9
</a></span>
<span class='ui basic buttons fork-container' title='无权 Fork 此仓库'>
<a class="ui button fork" title="你必须登录后才可以fork一个仓库" sa_evt="loginInform_show" sa_referrer_url="" sa_referrer_action="Fork" sa_referrer_type="其他" href="/login"><i class='iconfont icon-fork'></i>
Fork
</a><a class="ui button action-social-count disabled-style" title="26" href="/tvkj/tw/members">26
</a></span>
</div>
<h2 class='git-project-title mt-0 mb-0'>
<span class="project-title"><i class="project-icon iconfont icon-project-public" title="这是一个公开仓库"></i> <a title="tvkj" class="author" href="/tvkj">tvkj</a>/<a title="feilong" class="repository" target="" style="padding-bottom: 0px; margin-right: 4px" sa_evt="repoClick" sa_location="其他" sa_url="" sa_repo_id="33995125" href="/tvkj/tw">feilong</a></span><span class="project-badges"><style>
.gitee-modal {
width: 500px !important; }
</style>
</span>
<input type="hidden" name="project_title" id="project_title" value="tvkj/feilong" />
</h2>
</div>
</div>
</div>
<script>
var title_import_url = "https://github.com/tvkj/feilong";
var title_post_url = "/tvkj/tw/update_import";
var title_fork_url = "/tvkj/tw/sync_fork";
var title_project_path = "tw";
var title_p_name = "feilong";
var title_p_id= "33995125";
var title_description = "q1qq222q2q22q2";
var title_form_authenticity_token = "G3BEqk8DxoEvlb7YSIDWZM07V5rEZbUwOvXOz1crHQLPWn+RZ+w8yqpEGVxwiA3irk4dWNwjmsh83E9OCzL0MA==";
var watch_type = "unwatch";
var checkFirst = false;
$('.js-project-watch').dropdown('set selected', watch_type);
$('.checkbox.sync-wiki').checkbox();
$('.checkbox.sync-prune').checkbox();
$('.checkbox.team-member-checkbox').checkbox();
</script>
<style>
i.loading, .icon-sync.loading {
-webkit-animation: icon-loading 1.2s linear infinite;
animation: icon-loading 1.2s linear infinite;
}
.qrcode_cs {
float: left;
}
.check-sync-wiki {
float: left;
height: 28px;
line-height: 28px;
}
.sync-wiki-warn {
color: #e28560;
}
</style>
<div class='git-project-nav'>
<div class='ui container'>
<div class='ui secondary pointing menu'>
<a class="item active " href="/tvkj/tw"><i class='iconfont icon-code'></i>
代码
</a><a class="item " href="/tvkj/tw/issues"><i class='iconfont icon-task'></i>
Issues
<span class='ui mini circular label'>
0
</span>
</a><a class="item " href="/tvkj/tw/pulls"><i class='iconfont icon-pull-request'></i>
Pull Requests
<span class='ui mini circular label'>
2
</span>
</a><a class="item " href="/tvkj/tw/wikis"><i class='iconfont icon-wiki'></i>
Wiki
</a><a class="item " href="/tvkj/tw/graph/main"><i class='iconfont icon-statistics'></i>
统计
</a><a class="item " href="/tvkj/tw/gitee_go"><i class='iconfont icon-workflow'></i>
流水线
</a><div class='item'>
<div class='ui pointing top right dropdown git-project-service'>
<div>
<i class='iconfont icon-service'></i>
服务
<i class='dropdown icon'></i>
</div>
<div class='menu' style='display:none'>
<a class="item" href="/tvkj/tw/pages"><img src="/static/images/logo-en.svg" alt="Logo en" />
<div class='item-title'>
Gitee Pages
</div>
</a><a class="item" href="/tvkj/tw/javadoc"><img src="https://cn-assets.gitee.com/assets/maven-bd58aee84f266d64d4b8ce5b006a9fcf.png" alt="Maven" />
<div class='item-title'>
JavaDoc
</div>
</a><a class="item" href="/tvkj/tw/phpdoc"><img src="https://cn-assets.gitee.com/assets/phpdoc-a99f87c2feaa2fd99e5065377a39487e.png" alt="Phpdoc" />
<div class='item-title'>
PHPDoc
</div>
</a><a class="item" href="/tvkj/tw/quality_analyses?platform=sonar_qube"><img src="https://cn-assets.gitee.com/assets/sonar_mini-5e1b54bb9f6c951d97fb778ef623afea.png" alt="Sonar mini" />
<div class='item-title'>
质量分析
</div>
</a><a class="item" target="_blank" href="https://gitee.com/help/articles/4193"><img src="https://cn-assets.gitee.com/assets/jenkins_for_gitee-554ec65c490d0f1f18de632c48acc4e7.png" alt="Jenkins for gitee" />
<div class='item-title'>
Jenkins for Gitee
</div>
</a><a class="item" target="_blank" href="https://gitee.com/help/articles/4318"><img src="https://cn-assets.gitee.com/assets/cloudbase-1197b95ea3398aff1df7fe17c65a6d42.png?20200925" alt="Cloudbase" />
<div class='item-title'>
腾讯云托管
</div>
</a><a class="item" target="_blank" href="https://gitee.com/help/articles/4330"><img src="https://cn-assets.gitee.com/assets/cloud_serverless-686cf926ced5d6d2f1d6e606d270b81e.png" alt="Cloud serverless" />
<div class='item-title'>
腾讯云 Serverless
</div>
</a><a class="item" href="/tvkj/tw/open_sca"><img src="https://cn-assets.gitee.com/assets/open_sca/logo-9049ced662b2f9936b8001e6f9cc4952.png" alt="Logo" />
<div class='item-title'>
悬镜安全
</div>
</a><a class="item" target="_blank" href="https://help.gitee.com/devops/connect/Aliyun-SAE"><img src="https://cn-assets.gitee.com/assets/SAE-f3aa9366a1e2b7fff4747402eb8f10c3.png" alt="Sae" />
<div class='item-title'>
阿里云 SAE
</div>
</a><a class="item" id="update-codeblitz-link" target="_blank" href="https://codeblitz.cloud.alipay.com/gitee/tvkj/tw/tree/main/lib/ttkx.jar"><img style="width:100px;margin-top:4px" src="https://cn-assets.gitee.com/assets/Codeblitz-8824e38875a106e16e29ff57ec977b08.png" alt="Codeblitz" />
<div class='item-title'>
Codeblitz
</div>
</a><button class='ui orange basic button quit-button' id='quiting-button'>
我知道了,不再自动展开
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$('.git-project-nav .ui.dropdown').dropdown({ action: 'nothing' });
var gitee_reward_config = JSON.parse(localStorage.getItem('gitee_reward_config') || null) || false
var $settingText = $('.setting-text')
// 如果没有访问过
if(!gitee_reward_config) $settingText.addClass('red-dot')
$('.git-project-service').dropdown({
on: 'click',
action: 'nothing',
onShow: function () {
const branch = 'main'
let newUrl = `https://codeblitz.cloud.alipay.com/gitee/tvkj/tw/tree/`
const url = decodeURIComponent(window.location.pathname);
const startIndex = url.indexOf('main');
if (startIndex !== -1) {
newUrl = newUrl + url.substring(startIndex); // 从分支名开始截取
}else{
newUrl = newUrl + branch
}
const linkElement = document.getElementById("update-codeblitz-link");
linkElement.setAttribute("href", newUrl);
},
})
</script>
<style>
.git-project-nav i.checkmark.icon {
color: green;
}
#quiting-button {
display: none;
}
.git-project-nav .dropdown .menu.hidden:after {
visibility: hidden !important;
}
</style>
<script>
isSignIn = false
isClickGuide = false
$('#git-versions.dropdown').dropdown();
$.ajax({
url:"/tvkj/tw/access/add_access_log",
type:"GET"
});
$('#quiting-button').on('click',function() {
$('.git-project-service').click();
if (isSignIn) {
$.post("/projects/set_service_guide")
}
$.cookie("Serve_State", true, { expires: 3650, path: '/'})
$('#quiting-button').hide();
});
if (!(isClickGuide || $.cookie("Serve_State") == 'true')) {
$('.git-project-service').click()
$('#quiting-button').show()
}
</script>
</div>
<div class='ui container'>
<div class='register-guide'>
<div class='register-container'>
<div class='regist'>
加入 Gitee
</div>
<div class='description'>
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费
</div>
<a class="ui orange button free-registion" sa_evt="register_show" sa_referrer_url="" sa_referrer_action="免费加入" sa_referrer_type="其他" href="/signup?from=project-guide">免费加入</a>
<div class='login'>
已有帐号?
<a href="/login?from=project-guide">立即登录</a>
</div>
</div>
</div>
<div class='git-project-content-wrapper'>
<div class='ui grid' id='project-wrapper'>
<div class='sixteen wide column' id='git-project-container'>
<div class='git-project-content' id='git-project-content'>
<div class='row'>
<div class='git-project-desc-wrapper'>
<div class='ui yellow message no-license' id='user-no-license-message'>
<div class='float-left' style='width: 95%;'>
该仓库未声明开源许可证文件LICENSE使用请关注具体项目描述及其代码上游依赖。
<i class='help circle icon'></i>
<div class='ui popup dark'>
项目仓库所选许可证以仓库主分支所使用许可证为准
</div>
</div>
<i class='remove icon' id='remove-no-license-message'></i>
<div class='clearfix'></div>
</div>
<script>
$('.git-project-desc-wrapper .ui.dropdown').dropdown();
if (false) {
gon.project_new_blob_path = "/tvkj/tw/new/main/lib/ttkx.jar"
bindShowModal({
el: $('.no-license .project-license__create'),
complete: function(data, modal) {
if (!data.haveNoChoice && !data.data) {
Flash.show('请选择一项开源许可证')
} else {
location.href = gon.project_new_blob_path + '?license=' + data.data
}
},
skip: function () {
location.href = gon.project_new_blob_path + '?license'
}
});
}
$(".project-admin-action-box .reject").click(function() {
var reason = $('[name=review-reject-reason]').val();
if (!reason) {
Flash.error('请选择不通过理由')
return
}
$.ajax({
type: 'POST',
url: "/admin/shumei_content/shumei_check/reject_project_public",
data: {
reason: reason,
status: 'rejected',
project_id: 33995125
},
success: function(result){
if(result.status == 'success'){
window.location.reload();
}else{
Flash.error(result.message)
}
}
})
})
$(".project-admin-action-box .approve").click(function(){
$.ajax({
type: 'POST',
url: "/admin/shumei_content/shumei_check/reject_project_public",
data: {
status: 'approved',
project_id: 33995125
},
success: function(result){
if(result.status == 'success'){
window.location.reload();
}else{
Flash.error(result.message)
}
}
})
})
$(".project-admin-action-box .waiting").click(function(){
$.ajax({
type: 'POST',
url: "/admin/shumei_content/shumei_check/reject_project_public",
data: {
status: 'waiting',
project_id: 33995125
},
success: function(result){
if(result.status == 'success'){
window.location.reload();
}else{
Flash.error(result.message)
}
}
})
})
$('i.help.circle.icon').popup({
popup: '.no-license .ui.popup',
position: 'right center'
});
$('#remove-no-license-message').on('click', function() {
$.cookie("skip_repo_no_license_message_33995125", 'hide', { expires: 365 });
$('#user-no-license-message').hide();
return;
});
</script>
</div>
</div>
<div class='git-project-bread' id='git-project-bread'>
<div class='ui horizontal list mr-1'>
<div class='item git-project-branch-item'>
<input type="hidden" name="path" id="path" value="lib/ttkx.jar" />
<div class='ui top left pointing dropdown gradient button dropdown-has-tabs' id='git-project-branch'>
<input type="hidden" name="ref" id="ref" value="main" />
<div class='default text'>
main
</div>
<i class='dropdown icon'></i>
<div class='menu'>
<div class='ui left icon input'>
<i class='iconfont icon-search dropdown-search-icon'></i>
<input class='search-branch' placeholder='搜索分支' type='text'>
</div>
<div class='tab-menu project-branch-tab-menu'>
<div class='tab-menu-actions d-align-center'>
<div class='tab-menu-action' data-tab='branches'>
<a class="ui link button" href="/tvkj/tw/branches">管理</a>
</div>
<div class='tab-menu-action' data-tab='tags'>
<a class="ui link button" href="/tvkj/tw/tags">管理</a>
</div>
</div>
<div class='tab-menu-item' data-placeholder='搜索分支' data-tab='branches'>
分支 (1)
</div>
</div>
<div class='tab scrolling menu' data-tab='branches' id='branches_panel'>
<div data-value="main" class="item"><span>main</span></div>
</div>
</div>
</div>
<style>
.iconfont.icon-shieldlock {
color: #8c92a4;
}
.dropdown-search-icon {
position: absolute;
top: 8px;
left: 11px;
}
</style>
<style>
#git-project-branch .project-branch-tab-menu {
width: 400px !important;
margin: 0 16px !important;
padding-left: 0px !important;
padding-right: 0px !important;
border-bottom: 1px solid #dfe3e9 !important; }
#git-project-branch .tab-menu-actions {
position: absolute;
right: 0px !important;
bottom: 0.357em; }
#git-project-branch .tab-menu-action {
position: relative !important;
right: 0px !important;
bottom: 0px !important; }
#git-project-branch .menu::after {
display: none !important; }
</style>
<script>
var $branchesDropdown = $('#branches_panel');
var $tagsDropdown = $('#tags_panel');
var $searchNameInput = $('.search-branch');
var concurrentRequestLock = false;
var filterXSS = window.filterXSS;
var search_text = "";
var branch_page_number = 1;
var branch_total_pager = Math.ceil(1 / 20) || 1
var flag_is_loading = false;
var flag_page_number = 1;
var flag_total_pager = Math.ceil(0 / 20) || 1
$branchesDropdown.scroll(function() {
var branchesPanel = document.getElementById('branches_panel');
var numOfBranches = $branchesDropdown.children().length;
if (branchesPanel.clientHeight + branchesPanel.scrollTop + 37 > branchesPanel.scrollHeight && numOfBranches < 1) {
debounceLoadMoreBranches.call();
}
});
function resetFlagVal() {
flag_is_loading = false;
flag_page_number = 1;
flag_total_pager = 1;
concurrentRequestLock = false
search_text = "";
branch_page_number = 1;
branch_total_pager = 1
}
$searchNameInput.on('input', window.globalUtils.debouce(function (e) {
resetFlagVal()
var $currentTab = $('.tab-menu-action.active');
var numOfBranches = $branchesDropdown.children().length;
var searchWord = $searchNameInput.val().trim();
search_text = searchWord
if($currentTab.data('tab') === 'branches') {
if (searchWord !== "") {
loadData(searchWord,1);
} else {
loadData();
}
}
var numOfTags = $tagsDropdown.children().length;
if($currentTab.data('tab') === 'tags') {
if (searchWord !== "") {
fetchTags(searchWord,1);
} else {
fetchTags();
}
}
}, 500));
function toggleNoResultView($popPanel) {
let no_data_html= `<div class='mt-1 mb-1 d-flex-center'> <span>暂无数据</span> </div>`
  $popPanel.append(no_data_html)
}
var debounceLoadMoreBranches = window.globalUtils.debouce(function () {
if (concurrentRequestLock) return;
branch_page_number += 1;
if (branch_page_number > branch_total_pager) return;
loadData(search_text, branch_page_number);
}, 350);
function loadData(search, page) {
if (concurrentRequestLock) { return; }
concurrentRequestLock = true;
var searchParams = search || "";
var pageParams = page || 1;
$.ajax({
url: "/" + gon.user_project + "/branches/names.json",
type: 'GET',
data: {
search: searchParams,
page: pageParams,
},
dataType: 'json',
success: function (data) {
branch_total_pager = data.total_pages;
var html = '';
if (pageParams === 1) {
$branchesDropdown.empty();
}
data.branches.forEach(function (branch) {
var protectRule = '';
var branchName = filterXSS(branch.name);
if(branch.branch_type.value === 1) {
var rule = filterXSS(branch.protection_rule.wildcard);
protectRule = `<i
class="iconfont icon-shieldlock protected-branch-popup"
data-title="受保护分支"
data-content='保护规则: ${rule}'
>
</i>`
}
html += `<div data-value='${branchName}' class="item">
<span>${branchName}</span> ${protectRule}
</div>`
});
$branchesDropdown.append(html);
$('.protected-branch-popup').popup()
if (pageParams === 1 && data.count === 0) {
toggleNoResultView($branchesDropdown);
}
},
complete: function () {
concurrentRequestLock = false;
}
});
}
$tagsDropdown.scroll(function() {
var tagsPanel = document.getElementById('tags_panel');
var numOfTags = $tagsDropdown.children().length;
if (tagsPanel.clientHeight + tagsPanel.scrollTop + 37 > tagsPanel.scrollHeight && numOfTags < 0) {
debounceLoadMore.call();
}
});
var debounceLoadMore = window.globalUtils.debouce(function () {
if (flag_is_loading) return;
flag_page_number += 1;
if (flag_page_number > flag_total_pager) return;
fetchTags(search_text, flag_page_number);
}, 350);
function fetchTags(search, page) {
var searchParams = search || "";
var pageParams = page || 1;
if (flag_is_loading) return;
flag_is_loading = true;
$.ajax({
url: "/" + gon.user_project + "/tags/names.json",
data: {
search: searchParams,
page: pageParams,
},
type: "GET",
xhrFields: {
withCredentials: true,
},
success: function (data) {
flag_total_pager = data.total_pages;
if (pageParams === 1) {
$tagsDropdown.html('');
}
data.tags.forEach((tag) => {
const itemDiv = document.createElement('div');
itemDiv.classList.add('item');
itemDiv.setAttribute('data-value', tag.name);
itemDiv.innerText = window.filterXSS(tag.name);
$tagsDropdown.append(itemDiv)
});
if (pageParams === 1 && data.count === 0) {
toggleNoResultView($tagsDropdown);
}
},
error: function () {
},
complete: function () {
flag_is_loading = false;
},
});
}
$('.project-branch-tab-menu').on('click','.tab-menu-item', function (e) {
var $currentTab = $(this).data('tab')
if($currentTab === 'branches') {
$searchNameInput.val('')
search_text = '';
loadData()
}
if($currentTab === 'tags') {
$searchNameInput.val('')
search_text = '';
fetchTags();
}
})
</script>
<script>
$(function () {
Gitee.initTabsInDropdown($('#git-project-branch').dropdown({
fullTextSearch: true,
selectOnKeydown: false,
action: function (text,value,el) {
var oItemOrInitObject = el[0] || el
var isNotSelect = oItemOrInitObject.dataset.tab && oItemOrInitObject.dataset.tab === 'branches'
if(isNotSelect){
console.warn("You didn't choose a branch")
return
}
var path = $('#path').val();
var href = ['/tvkj/tw/tree', encodeURIComponent(value), path].join('/');
window.location.href = href;
return true
},
onNoResults: function (searchTerm) {
//未找到结果
return true
},
}));
$('.protected-branch-popup').popup()
})
</script>
</div>
</div>
<div class='git-project-right-actions pull-right'>
<div class='ui orange button' id='btn-dl-or-clone'>
克隆/下载
<i class='dropdown icon'></i>
</div>
<div class='ui small modal' id='git-project-download-panel'>
<i class='iconfont icon-close close'></i>
<div class='header'>
克隆/下载
</div>
<div class='content'>
<div class='ui secondary pointing menu mb-2 menu-container'>
<a class='item active' data-text='' data-type='http' data-url='https://gitee.com/tvkj/tw.git'>HTTPS</a>
<a class='item' data-text='' data-type='ssh' data-url='git@gitee.com:tvkj/tw.git'>SSH</a>
<a class='item' data-text="该仓库未启用SVN访问请仓库管理员前往【&lt;a target='_blank' href=/tvkj/tw/settings#function&gt;仓库设置&lt;/a&gt;】开启。" data-type='svn' data-url=''>SVN</a>
<a class='item' data-text="该仓库未启用SVN访问请仓库管理员前往【&lt;a target='_blank' href=/tvkj/tw/settings#function&gt;仓库设置&lt;/a&gt;】开启。" data-type='svn_ssh' data-url=''>SVN+SSH</a>
<a class="ui basic orange button button-box unlogin-download-btn" sa_evt="loginInform_show" sa_referrer_url="" sa_referrer_action="克隆/下载" sa_referrer_type="其他" href="javascript:void(0);"><i class='icon download'></i>
下载ZIP
</a><div class='ui custom popup popup'>
<div class='popup-container actions'>
<div class='content'>
该操作需登录 Gitee 帐号,请先登录后再操作。
</div>
<a class="ui orange button ok icon" href="/login?from=download_repository_zip">立即登录
</a><a class="ui blank button cancel" href="/signup?from=download_repository_zip">没有帐号,去注册
</a></div>
</div>
</div>
<div class='ui fluid right labeled small input download-url-panel mb-2'>
<input type="text" name="project_url_clone" id="project_url_clone" value="https://gitee.com/tvkj/tw.git" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#project_url_clone' id='btn-copy-project_clone_url1'></i>
</div>
</div>
<div class='tip-box mb-2'>
提示
</div>
<div class='mb-1 clone-url-title'>
下载代码请复制以下命令到终端执行
</div>
<div class='ui fluid right labeled small input download-url-panel mb-2'>
<input type="text" name="project_clone_url" id="project_clone_url" value="https://gitee.com/tvkj/tw.git" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#project_clone_url' id='btn-copy-project_clone_url'></i>
</div>
</div>
<div class='ui fluid right labeled warning-text forbid-warning-text'>
</div>
<div class='http-ssh-item mb-2'>
<div>
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
</div>
<div class='textarea-box mt-2'>
<textarea class='textarea-content-box' id='global-config-clone' readonly>git config --global user.name userName &#10git config --global user.email userEmail</textarea>
<i class='icon iconfont icon-clone mr-2 btn-copy-clone text-dark' data-clipboard-target='#global-config-clone' id='btn-copy-global-config'></i>
</div>
</div>
<div class='ssh-item item-panel-box'>
<div class='mb-2'>
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
</div>
<div class='mb-1'>
<span>1</span>
生成 RSA 密钥
</div>
<div class='ui fluid right labeled small input mb-2'>
<input type="text" name="ssh_keygen_clone" id="ssh_keygen_clone" value="ssh-keygen -t rsa" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#ssh_keygen_clone' id='btn-copy-ssh_keygen'></i>
</div>
</div>
<div class='mb-1'>
<span>2</span>
获取 RSA 公钥内容,并配置到<a href='/profile/sshkeys' target="_blank"> SSH公钥 </a> 中
</div>
<div class='ui fluid right labeled small input mb-2'>
<input type="text" name="id_rsa_clone" id="id_rsa_clone" value="cat ~/.ssh/id_rsa.pub" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#id_rsa_clone' id='btn-copy-d_rsa'></i>
</div>
</div>
</div>
<div class='svn-item item-panel-box'>
<div class='mb-1 mt-2'>
在 Gitee 上使用 SVN请访问<a href='https://help.gitee.com/enterprise/code-manage/%E4%BB%A3%E7%A0%81%E6%89%98%E7%AE%A1/%E4%BB%A3%E7%A0%81%E4%BB%93%E5%BA%93/Gitee%20SVN%E6%94%AF%E6%8C%81' target="_blank"> 使用指南 </a>
</div>
</div>
<div class='http-item item-panel-box'>
<div class='mb-2 mt-2'>
使用 HTTPS 协议时命令行会出现如下账号密码验证步骤。基于安全考虑Gitee 建议<a href='/profile/personal_access_tokens' target="_blank"> 配置并使用私人令牌 </a>替代登录密码进行克隆、推送等操作
</div>
<div>Username for 'https://gitee.com': userName</div>
<div class='mb-1'>
<span>Password for 'https://userName@gitee.com':</span>
<span>#</span>
<span>
私人令牌
</span>
</div>
</div>
</div>
</div>
<style>
#git-project-download-panel {
top: 90px !important; }
#git-project-download-panel input {
color: #40485b !important; }
#git-project-download-panel .textarea-box {
width: 100%;
height: 60px;
color: #9d9d9d;
border-radius: 2px;
background-color: #F5F5F5 !important;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center; }
#git-project-download-panel .menu-container {
font-weight: bold;
border-color: rgba(0, 0, 0, 0.1) !important;
border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important; }
#git-project-download-panel .menu-container .item {
padding: 7px 12px !important; }
#git-project-download-panel .hr-item {
color: rgba(39, 41, 43, 0.15) !important; }
#git-project-download-panel .textarea-content-box {
width: 100%;
height: 60px;
resize: none;
border: 0px !important;
background-color: #F5F5F5 !important;
color: #40485b !important; }
#git-project-download-panel .btn-copy-clone {
cursor: pointer;
color: rgba(0, 0, 0, 0.87) !important; }
#git-project-download-panel .copy-icon-box {
background-color: #F5F5F5 !important;
border-left: 0px !important; }
#git-project-download-panel .button-box {
border: 0px !important;
float: right !important;
padding-right: 0 !important; }
#git-project-download-panel .tip-box {
border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;
padding-bottom: 4px;
font-weight: 700; }
#git-project-download-panel .popup-container {
padding: 8px 12px 4px 12px;
text-align: center;
font-size: 14px; }
#git-project-download-panel .popup-container .ok {
margin: 12px auto;
width: 25%;
min-width: 125px;
display: block; }
#git-project-download-panel .popup-container .cancel {
margin-left: 0; }
</style>
<script>
$(function () {
var $btnClone = $('#btn-dl-or-clone')
var $modalDownload = $('#git-project-download-panel');
var $input = $('#project_clone_url')
var $inputUrl = $('#project_url_clone')
var cloneUrlTitle= $('.clone-url-title')
$('#btn-dl-or-clone').on('click', function (e) {
e.preventDefault();
$modalDownload.modal('show');
})
$modalDownload.find('.menu > .item').on('click', function(e) {
var $item = $(this).addClass('active');
$item.siblings().removeClass('active');
var dataUrl = $item.attr('data-url');
var cloneUrl = $item.attr('data-url');
var dataType = $item.attr('data-type')
var cloneToLocal = '下载代码请复制以下命令到终端执行'
if(dataType=='http'){
$modalDownload.find('.http-item').show();
$('.content > .item-panel-box:not(.http-item)').hide();
$modalDownload.find('.http-ssh-item').show();
cloneUrl = 'git clone '+dataUrl
}else if(dataType=='ssh'){
$modalDownload.find('.ssh-item').show();
$('.content > .item-panel-box:not(.ssh-item)').hide();
$modalDownload.find('.http-ssh-item').show();
cloneUrl = 'git clone '+dataUrl
}else if(dataType=='svn') {
$('.content > .item-panel-box:not(.svn-item)').hide();
$modalDownload.find('.svn-item').show();
$modalDownload.find('.http-ssh-item').hide();
cloneUrl = 'svn checkout '+dataUrl
}else {
$('.content > .item-panel-box:not(.svn-item)').hide();
$modalDownload.find('.svn-item').show();
$modalDownload.find('.http-ssh-item').hide();
cloneUrl = 'svn checkout '+dataUrl
}
if (dataUrl) {
$modalDownload.find('.download-url-panel').show();
$input.val(cloneUrl);
$inputUrl.val(dataUrl)
cloneUrlTitle.show();
$modalDownload.find('.forbid-warning-text').html('');
} else {
$modalDownload.find('.download-url-panel').hide();
//$modalDownload.find('.svn-item').hide();
cloneUrlTitle.hide();
$modalDownload.find('.forbid-warning-text').html($item.attr('data-text') || '');
}
$.cookie('remote_way', $item.attr('data-type'), { expires: 365, path: '/' });
}).filter('[data-type="' + ($.cookie('remote_way') || 'http') + '"]').trigger('click');
$('.btn-copy-clone').popup({
content: '点击复制',
}).on('click', function(e) {
e.stopPropagation();
return false;
}).each(function(_, btnCopy) {
var $btnCopy = $(btnCopy);
new Clipboard(btnCopy).on('success', function() {
$btnCopy.popup('destroy').popup({
content: '已复制',
on: 'manual'
}).popup('show');
setTimeout(function() {
$btnCopy.popup('destroy').popup({
content: '点击复制'
});
}, 2000);
});
});
var $downloadBtn= $('.unlogin-download-btn')
var $popupContainer = $('.popup-container')
$downloadBtn.popup({
popup : $('.custom.popup'),
position : 'bottom right',
}).on('click', function(e) {
$downloadBtn.popup('destroy').popup({
popup : $('.custom.popup'),
on: 'manual',
position : 'bottom right',
}).popup('show');
setTimeout(function() {
$downloadBtn.popup('hide');
}, 2000);
})
})
</script>
</div>
<div class='d-inline pull-right' id='git-project-root-actions'>
<div class='ui horizontal list repo-action-list d-flex d-align-center repo-action-list-right'>
<div class='item search-box-container'>
<div class='ui icon input search-input' id='search-box'>
<input class='search-file-name' id='search-file-name' maxlength='40' placeholder='搜索文件' type='text'>
</div>
<a class='d-flex d-align-center' id='search-file-btn'>
<span class='iconify' data-icon='gitee:search' style='font-size: 16px;color:#979CAC;margin-right:10px'></span>
</a>
<div class='filter-file-container' style='display: none;'></div>
</div>
<script>
$('#git-tree-file').dropdown({
action: 'hide',
onHide: function () {
$('.plus-box').removeClass('click-active')
},
onShow: function () {
$('.plus-box').addClass('click-active')
}
});
$('.disabled-upload-readonly').popup({
content: "只读目录不允许上传文件",
className: {
popup: 'ui popup',
},
position: 'bottom center',
})
$('.disabled-create-folder').popup({
content: "只读目录不允许创建目录",
className: {
popup: 'ui popup',
},
position: 'bottom center',
})
$('.disabled-create-file').popup({
content: "只读目录不允许创建文件",
className: {
popup: 'ui popup',
},
position: 'bottom center',
})
$('.disabled-create-submodule').popup({
content: "只读目录不允许创建子模块",
className: {
popup: 'ui popup',
},
position: 'bottom center',
})
$('.disabled-upload-readonly, .disabled-create-folder, .disabled-create-file, .disabled-create-submodule').click(function() {
return false
})
</script>
<style>
.disabled-upload-readonly, .disabled-create-file, .disabled-create-folder, .disabled-create-submodule {
background-color: #dcddde !important;
color: rgba(0, 0, 0, 0.4) !important;
opacity: 0.3 !important;
background-image: none !important;
-webkit-box-shadow: none !important;
box-shadow: none !important; }
</style>
<div class='item toschina-content__hidden webIDE-box' data-content='Web IDE'>
<a class="ui d-flex d-align-center webide ml-1" target="_blank" href="/-/ide/project/tvkj/tw/edit/main/-/lib/ttkx.jar"><span class='iconify' data-icon='gitee:computer' style='font-size: 16px;color:#979CAC;margin-right:12px'></span>
</a></div>
</div>
<script>
$('.webIDE-box').popup()
</script>
<script src="https://cn-assets.gitee.com/assets/file_search/app-7488efdce7782c80c4936145b910d07e.js"></script>
</div>
<div class='breadcrumb_path path-breadcrumb-contrainer' id='git-project-breadcrumb'>
<div class='ui breadcrumb path project-path-breadcrumb' id='path-breadcrumb'>
<a data-direction="back" class="section repo-name" style="font-weight: bold" href="/tvkj/tw/tree/main">tw
</a><div class='divider'>
/
</div>
<strong>
<a data-direction="back" class="section" href="/tvkj/tw/tree/main/lib"><span class='cblue'>
lib
</span>
</a></strong>
<div class='divider'>
/
</div>
<strong>
ttkx.jar
</strong>
<i class='iconfont icon-clone' data-clipboard-text='lib/ttkx.jar' id='btn-copy-file-path'></i>
</div>
<style>
#btn-copy-file-path {
vertical-align: middle;
cursor: pointer;
}
</style>
<script>
$btnCopy = $('#btn-copy-file-path')
$btnCopy.popup({
content: '复制路径'
})
if ($btnCopy[0]) {
new Clipboard($btnCopy[0]).on('success', function() {
$btnCopy.popup('destroy').popup({
content: '已复制',
on: 'manual'
}).popup('show');
setTimeout(function () {
$btnCopy.popup('destroy').popup({
content: '复制路径'
});
}, 2000)
});
}
</script>
</div>
<div class='ui horizontal list repo-action-list branches-tags' style='display: none;'>
<div class='item'>
<a class="ui blank button" href="/tvkj/tw/branches"><i class='iconfont icon-branches'></i>
分支 1
</a></div>
<div class='item mr-3'>
<a class="ui blank button" href="/tvkj/tw/tags"><i class='iconfont icon-tag'></i>
标签 0
</a></div>
</div>
</div>
<script src="https://cn-assets.gitee.com/webpacks/parse_blob_form_scheme-c196873aa4bc8cd09e53.bundle.js"></script>
<script>
if(window.gon.locale == 'en')
$('.branches-tags').css('margin-top', '12px')
// 仓库页面切换路径时: 刷新 yaml 错误检查
$(window).on('pjax-complete:file-show', function () {
window.parseBlobFormScheme && window.parseBlobFormScheme($('.js-blob-data').data('blob'));
});
</script>
<style>
.ui.dropdown .menu > .header {
text-transform: none; }
</style>
<script>
$(function () {
var $tip = $('#apk-download-tip');
if (!$tip.length) {
return;
}
$tip.find('.btn-close').on('click', function () {
$tip.hide();
});
});
(function(){
function pathAutoRender() {
var $parent = $('#git-project-bread'),
$child = $('#git-project-bread').children('.ui.horizontal.list'),
mainWidth = 0;
$child.each(function (i,item) {
mainWidth += $(item).width()
});
$('.breadcrumb.path.fork-path').remove();
if (mainWidth > 995) {
$('#path-breadcrumb').hide();
$parent.append('<div class="ui breadcrumb path fork-path">' + $('#path-breadcrumb').html() + '<div/>')
} else {
$('#path-breadcrumb').show();
}
}
window.pathAutoRender = pathAutoRender;
pathAutoRender();
})();
</script>
<div class='row column tree-holder' id='tree-holder'>
<div class='tree-content-holder' id='tree-content-holder'>
<div class='file_holder'>
<div class='file_title'>
<div class='blob-header-title'>
<div class='blob-description'>
<i class="iconfont icon-file"></i>
<span class='file_name' title='ttkx.jar'>
ttkx.jar
</span>
<small>1.09 MB</small>
</div>
<div class='options'><div class='ui mini buttons basic'>
<a class="ui button edit-raw" target="_blank" href="/tvkj/tw/raw/main/lib/ttkx.jar">原始数据</a>
<a class="ui button edit-history" href="/tvkj/tw/commits/main/lib/ttkx.jar">历史</a>
</div>
<script>
window.gon.aiCodeParams = {
pathWithNamespace: `tvkj/tw`,
blob: $("#blob_raw").val(),
fileName: `lib/ttkx.jar`,
id: `ffc26b3aa158a61afb545df7e0da85a3ae3ac540`,
timeStamp: `1725113859`,
userId: ``,
sign: `WZVp5sPcRZ0t145JizWxHhou3blybLr3Jkcsc1pvPPdp/B7zUTJjmJQ6ewCvulmTBsbFRJzJ5pifDc5qx0hKLl9SDOKjuK5TQHdiBdfKdFU=`,
}
window.gon.blobName = `"ttkx.jar"`
$('.js-code-parsing').dropdown({
on: 'hover',
action: 'hide',
onHide: function () {
},
onShow: function () {
}
});
$(".ai-code-dropdown-box").find('.item').on("click", function (e) {
window.jqxhr && window.jqxhr.abort();
window.aiLoadingTimer && clearTimeout(window.aiLoadingTimer);
aiReqLoading = false
window.Gitee.setFullscreen(true);
$(".side-toolbar").hide();
var $siteContent = $(".site-content");
// 获取最小高度
var minHeight = parseInt($siteContent.css("min-height"));
// 获取当前高度
var currentHeight = parseInt($siteContent.height());
if (minHeight + 1 > currentHeight) {
$("#code-parsing").css("height", currentHeight);
}
$("#git-project-container").addClass('git-transition-width');
$("#project-wrapper").css("marginTop", "-24px");
//$("#git-project-container").removeClass("sixteen wide column");
//$("#git-project-container").addClass("twelve wide column");
if(!$("#code-parsing").hasClass("code-parsing-box")){
$("#git-project-container").attr("style", "width: 75% !important;");
}
$("#git-footer-main").css("margin-top", "14px");
$("#code-parsing").addClass("code-parsing-box");
$(".code-parsing-content").hide();
$(".skeleton").show();
$(".ai_code_btns_simple").hide();
$("#code-parsing").find(".markdown-body").innerHTML='';
aiCodeType = $(this).data("value");
aiSubTitle = $(this).data("text");
handleAiReqInit()
});
</script>
<script>
"use strict";
try {
if((gon.wait_fork!=undefined && gon.wait_fork==true) || (gon.wait_fetch!=undefined && gon.wait_fetch==true)){
$('.edit-blob').popup({content:"当前仓库正在后台处理中,暂时无法编辑", on: 'hover', delay: { show: 200, hide: 200 }});
$('.edit-blob').click(function(e){
e.preventDefault();
})
}
var setUrl = function() {
var params = window.location.search
if (params==undefined || $.trim(params).length==0) return;
$('span.options').children('.basic').find('a').each(function(index,ele){
var origin_href = $(ele).attr('href');
if (origin_href!="#" && origin_href.indexOf('?') == -1){
$(ele).attr('href',origin_href+params);
}
});
}
setUrl();
var clipboard = null,
$btncopy = $("#copy-text");
clipboard = new Clipboard("#copy-text", {
text: function(trigger) {
return $("#blob_raw").val();
}
})
clipboard.on('success', function(e) {
$btncopy.popup('hide');
$btncopy.popup('destroy');
$btncopy.popup({content: '已复制', position: 'bottom center'});
$btncopy.popup('show');
})
clipboard.on('error', function(e) {
var giteeModal = new GiteeModalHelper({okText: '确定'});
giteeModal.alert("一键复制", '复制失败,请手动复制');
})
$(function() {
$btncopy.popup({
content: '点击复制',
position: 'bottom center'
})
})
} catch (error) {
console.log('blob/action error:' + error);
}
$(".disabled-edit-readonly").popup({
content: "只读文件不可编辑",
className: {
popup: "ui popup",
},
position: "bottom center",
});
$(".disabled-edit-readonly, .disabled-edit-status").click(function () {
return false;
});
$(".has_tooltip").popup({
position: "top center",
});
</script>
<style>
.disabled-edit-readonly, .disabled-edit-status {
background-color: #dcddde !important;
color: rgba(0, 0, 0, 0.4) !important;
opacity: 0.3 !important;
background-image: none !important;
-webkit-box-shadow: none !important;
box-shadow: none !important;
cursor: default !important; }
.drawio-iframe-code-card {
position: relative; }
.drawio-iframe-code-card textarea {
width: 100%;
height: 140px;
resize: none; }
.drawio-iframe-code-card .icon-clone {
position: absolute;
right: 32px;
bottom: 32px; }
.drawio-iframe-code-card iframe {
border-radius: 2px;
border: 1px solid #DEDEDF; }
</style>
</div>
</div>
<div class='blob-header-title mt-1 ubblock_tip'>
</div>
<div class='contributor-description'><span class='recent-commit' style='margin-top: 0.7rem'>
<a class="commit-author-link js-popover-card " data-username="tvkj" href="/tvkj">tvkj</a>
<span>提交于</span>
<span class='timeago commit-date' title='2024-08-25 06:30:40 +0000'>
2024-08-25 06:30
</span>
.
<a href="/tvkj/tw/commit/7f5b9a5edc3a0d13a5a28b3f05ae91bff1d6bd43">000000001112212</a>
</span>
</div>
</div>
<div class='clearfix'></div>
<div class='file_content blob_file'>
<center>
<a href="/tvkj/tw/raw/main/lib/ttkx.jar"><div class='padded'>
<h4>
<i class='icon-download-alt'></i>
<br>
下载 (1.09 MB)
</h4>
</div>
</a></center>
</div>
</div>
</div>
<div class='tree_progress'></div>
<div class='ui small modal' id='modal-linejump'>
<div class='ui custom form content'>
<div class='field'>
<div class='ui right action input'>
<input placeholder='跳转至某一行...' type='number'>
<div class='ui orange button'>
跳转
</div>
</div>
</div>
</div>
</div>
<div class='complaint'>
<div class='ui modal small form' id='landing-comments-complaint-modal'>
<i class='iconfont icon-close close'></i>
<div class='header'>
举报
</div>
<div class='content'>
<div class='appeal-success-tip hide'>
<i class='iconfont icon-ic_msg_success'></i>
<div class='appeal-success-text'>
举报成功
</div>
<span>
我们将于2个工作日内通过站内信反馈结果给你
</span>
</div>
<div class='appeal-tip'>
请认真填写举报原因,尽可能描述详细。
</div>
<div class='ui form appeal-form'>
<div class='inline field'>
<label class='left-part appeal-type-wrap'>
举报类型
</label>
<div class='ui dropdown selection' id='appeal-comments-types'>
<div class='text default'>
请选择举报类型
</div>
<i class='dropdown icon'></i>
<div class='menu'></div>
</div>
</div>
<div class='inline field'>
<label class='left-part'>
举报原因
</label>
<textarea class='appeal-reason' id='appeal-comment-reason' name='msg' placeholder='请说明举报原因' rows='3'></textarea>
</div>
<div class='ui message callback-msg hide'></div>
<div class='ui small error text message exceeded-size-tip'></div>
</div>
</div>
<div class='actions'>
<div class='ui button blank cancel'>
取消
</div>
<div class='ui orange icon button disabled ok' id='complaint-comment-confirm'>
发送
</div>
</div>
</div>
<script>
var $complaintCommentsModal = $('#landing-comments-complaint-modal'),
$complainCommentType = $complaintCommentsModal.find('#appeal-comments-types'),
$complaintModalTip = $complaintCommentsModal.find('.callback-msg'),
$complaintCommentsContent = $complaintCommentsModal.find('.appeal-reason'),
$complaintCommentBtn = $complaintCommentsModal.find('#complaint-comment-confirm'),
complaintSending = false,
initedCommentsType = false;
function initCommentsTypeList() {
if (!initedCommentsType) {
$.ajax({
url: "/appeals/fetch_types",
method: 'get',
data: {'type': 'comment'},
success: function (data) {
var result = '';
for (var i = 0; i < data.length; i++) {
result = result + "<div class='item' data-value='" + data[i].id + "'>" + data[i].name + "</div>";
}
$complainCommentType.find('.menu').html(result);
}
});
$complainCommentType.dropdown({showOnFocus: false});
initedCommentsType = true;
}
}
$complainCommentType.on('click', function() {
$complaintCommentsModal.modal({
autofocus: false,
onApprove: function() {
return false;
},
onHidden: function() {
restoreCommonentDefault();
}
}).modal('show');
});
$complaintCommentsContent.on('change keyup', function(e) {
var content = $(this).val();
if ($.trim(content).length > 0 && $complainCommentType.dropdown('get value').length > 0 ) {
$complaintCommentBtn.removeClass('disabled');
return;
}
$complaintCommentBtn.addClass('disabled');
});
$complainCommentType.dropdown({
showOnFocus: false,
onChange: function(value, text, $selectedItem) {
if (value.length > 0 && $.trim($complaintCommentsContent.val()).length > 0) {
$complaintCommentBtn.removeClass('disabled');
return
}
$complaintCommentBtn.addClass('disabled');
}
});
function restoreCommonentDefault() {
$complainCommentType.dropdown('restore defaults');
$complaintCommentsContent.val('');
$('.exceeded-size-tip').text('').hide();
$complaintModalTip.text('').hide();
setTimeout(function() {
setCommentSendTip(false);
}, 1500);
}
$complaintCommentBtn.on('click',function(e){
var reason = $complaintCommentsContent.val();
var appealableId = $('#landing-comments-complaint-modal').attr('data-id');
if (complaintSending) {
return;
}
var appealType = $complainCommentType.dropdown('get value');
var formData = new FormData();
formData.append('appeal_type_id', appealType);
formData.append('reason', reason);
formData.append('appeal_type','Note');
formData.append('target_id',appealableId);
$.ajax({
type: 'POST',
url: "/appeals",
cache: false,
contentType: false,
processData: false,
data: formData,
beforeSend: function() {
setCommentSendStatus(true);
},
success: function(res) {
if (res.status == 200) {
setCommentSendTip(true);
setTimeout(function() {
$complaintCommentsModal.modal('hide');
restoreCommonentDefault();
}, 3000);
}
setCommentSendStatus(false);
},
error: function(err) {
showCommonTips(err.responseJSON.message, 'error');
setCommentSendStatus(false);
}
})
});
function showCommonTips(text, type) {
$complaintModalTip.text(text).show();
if (type == 'error') {
$complaintModalTip.removeClass('success').addClass('error');
} else {
$complaintModalTip.removeClass('error').addClass('success');
}
}
function setCommentSendStatus(value) {
complaintSending = value;
if (complaintSending) {
$complaintCommentBtn.addClass('loading');
$complaintCommentsContent.attr('readonly', true);
$complainCommentType.attr('readonly', true);
} else {
$complaintCommentBtn.removeClass('loading');
$complaintCommentsContent.attr('readonly', false);
$complainCommentType.attr('readonly', false);
}
}
function setCommentSendTip(value) {
if (value) {
$('.appeal-success-tip').removeClass('hide');
$('.appeal-tip').addClass('hide');
$('.appeal-form').addClass('hide');
$('#landing-comments-complaint-modal .actions').addClass('hide');
} else {
$('.appeal-success-tip').addClass('hide');
$('.appeal-tip').removeClass('hide');
$('.appeal-form').removeClass('hide');
$('#landing-comments-complaint-modal .actions').removeClass('hide');
}
}
</script>
<div class='ui small modal' id='misjudgment_appeal_modal'>
<i class='close icon'></i>
<div class='header dividing ui'>
误判申诉
</div>
<div class='content'>
<p>此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。</p>
<p>如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。</p>
<div class='buttons'>
<div class='ui button blank cancel'>取消</div>
<div class='ui button orange submit'>提交</div>
</div>
</div>
</div>
<style>
#misjudgment_appeal_modal .buttons {
float: right;
margin-top: 30px;
margin-bottom: 20px; }
#misjudgment_appeal_modal .buttons .cancel {
margin-right: 20px; }
</style>
<script>
var $misjudgmentAppealModal = $('#misjudgment_appeal_modal');
$('.cancel').on('click',function(){
$misjudgmentAppealModal.modal('hide');
});
var $jsSubmitAppeal = $misjudgmentAppealModal.find('.submit')
$jsSubmitAppeal.on('click', function(e) {
e.preventDefault();
$(this).addClass('loading').addClass('disabled');
var type = $(this).attr('data-type');
var id = $(this).attr('data-id');
var projectId = $(this).attr('data-project-id');
var appealType = $(this).attr('data-appeal-type');
$.ajax({
type: "PUT",
url: "/misjudgment_appeal",
data: {
type: type,
id: id,
project_id: projectId,
appeal_type: appealType
},
success: function(data) {
Flash.info('提交成功');
$jsSubmitAppeal.removeClass('loading');
$misjudgmentAppealModal.modal('hide');
location.reload()
},
error: function(e) {
Flash.error('提交失败:'+e.responseText);
$jsSubmitAppeal.removeClass('loading').removeClass('disabled');
location.reload()
}
});
})
</script>
</div>
<script>
"use strict";
$('.js-check-star').checkbox('set unchecked')
</script>
</div>
</div>
</div>
<div class='four wide column' style='display: none;'>
<div class='project__right-side'>
<div class='side-item intro'>
<div class='header'>
<h4>简介</h4>
</div>
<div class='content'>
<span class='git-project-desc-text'>q1qq222q2q22q2</span>
<a class='hide spread' href='javascript:void(0);'>
展开
<i class='caret down icon'></i>
</a>
<a class='retract hide' href='javascript:void(0);'>
收起
<i class='caret up icon'></i>
</a>
<div class='intro-list'>
<div class='blank d-flex d-flex-between dropdown item js-project-label_show label-list-line-feed project-label-list ui' data-labels='[]' data-url='/tvkj/tw/update_description'>
<div class='mixed-label'>
</div>
<div class='default'>暂无标签</div>
</div>
<div class='hide item'>
<i class='iconfont icon-link'></i>
<span class='git-project-homepage'>
<a rel="nofollow" id="homepage" target="_blank" href=""></a>
</span>
</div>
<div class='item'>
<i class='iconfont icon-tag-program'></i>
<span class='summary-languages'>
JavaScript
<span class='text-muted'>
等 2 种语言
<i class='icon dropdown'></i>
</span>
</span>
<div class='ui popup summary-languages-popup'>
<div class='row'>
<div class='lang'>
<a href="/explore/all?lang=JavaScript">JavaScript</a>
</div>
<div class='lang-bar'>
<div class='bar' style='width: 99.4%;'></div>
</div>
<a class="percentage" href="/explore/all?lang=JavaScript">99.4%</a>
</div>
<div class='row'>
<div class='lang'>
<a href="/explore/all?lang=Python">Python</a>
</div>
<div class='lang-bar'>
<div class='bar' style='width: 0.6%;'></div>
</div>
<a class="percentage" href="/explore/all?lang=Python">0.6%</a>
</div>
</div>
</div>
<!-- - page = @project.page -->
<!-- - if page&.status? -->
<!-- .item -->
<!-- %i.iconfont.icon-giteepage -->
<!-- Pages -->
<!-- = link_to page.domain_url, page.domain_url, target: '_blank' -->
</div>
</div>
<div class='content intro-form'>
<div class='ui small input'>
<textarea name='project[description]' placeholder='描述' rows='5'></textarea>
</div>
<div class='ui small input'>
<input data-regex-value='(^$)|(^(http|https):\/\/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).*)|(^(http|https):\/\/[a-zA-Z0-9]+([_\-\.]{1}[a-zA-Z0-9]+)*\.[a-zA-Z]{2,10}(:[0-9]{1,10})?(\?.*)?(\/.*)?$)' name='project[homepage]' placeholder='主页(eg: https://gitee.com)' type='text'>
</div>
<button class='ui orange button mt-1 btn-save'>
保存更改
</button>
<div class='ui blank button btn-cancel-edit'>
取消
</div>
</div>
</div>
<div class='side-item release'>
<div class='header'>
<h4>发行版</h4>
</div>
<div class='content'>
<span class='text-muted'>
暂无发行版
</span>
</div>
</div>
<div class='side-item contrib' data-url='/tvkj/tw/contributors_count?ref=main' id='contributor'>
<div class='header'>
<h4>
贡献者
<span class='text-muted' id='contributor-count'></span>
</h4>
<a class="ui link button pull-right" href="/tvkj/tw/contributors?ref=main">全部</a>
</div>
<div class='content' id='contributor-list'></div>
<div class='ui active centered inline loader' id='contributor-loader'></div>
</div>
<div class='side-item events' data-url='/tvkj/tw/events.json' id='proj-events'>
<div class='header'>
<h4>近期动态</h4>
</div>
<div class='content'>
<div class='ui comments' id='event-list'></div>
<a class="loadmore hide" href="javascript:void(0);">加载更多
<i class='icon dropdown'></i>
</a><center>
<div class='text-muted nomore hide'>不能加载更多了</div>
<div class='ui inline loader active'></div>
</center>
</div>
</div>
</div>
<div class='ui modal tiny' id='edit-project-description'>
<i class='iconfont icon-close close'></i>
<div class='header'>编辑仓库简介</div>
<div class='content'>
<div class='item mb-2'>
<div class='title label'>简介内容</div>
<div class='ui small input'>
<textarea maxlength='200' name='project[description]' placeholder='描述' rows='5'>q1qq222q2q22q2</textarea>
</div>
</div>
<div class='item mb-2'>
<div class='title label'>主页</div>
<div class='ui small input'>
<input data-regex-value='(^$)|(^(http|https):\/\/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).*)|(^(http|https):\/\/[a-zA-Z0-9]+([_\-\.]{1}[a-zA-Z0-9]+)*\.[a-zA-Z]{2,10}(:[0-9]{1,10})?(\?.*)?(\/.*)?$)' name='project[homepage]' placeholder='主页(eg: https://gitee.com)' type='text' value=''>
</div>
</div>
</div>
<div class='actions'>
<button class='ui button blank cancel'>取消</button>
<button class='ui button orange btn-save'>保存更改</button>
</div>
</div>
<style>
#license-popup {
color: #005980;
cursor: pointer; }
</style>
<script>
window.gon.projectRightSide = {
homepage: "",
description: "q1qq222q2q22q2",
url: '/tvkj/tw/update_description',
i18n: {
invalidHomepage: '不是有效的 http 地址',
descriptionLimitExceeded: '简介长度不得超过%{limit}个字符',
noDescription: '暂无描述',
noPermission: '无权限操作!',
requestError: '修改发生错误,请稍后重试!'
}
}
window.gon.cloneArrSelectedLabel = [] || []
$(function () {
var $editModal = $('#edit-project-description')
$editModal.modal({
onShow: function () {
window.globalUtils.getFocus($editModal.find('textarea'))
}
})
$('.project__right-side').on('click', '.header .btn-edit', function () {
$editModal.modal('show')
})
$('#license-popup').popup({ position: 'bottom center', lastResort: 'bottom center' })
$('.js-project-label_show').projectLabel({
i18n: {
empty: "标签名不能为空",
verify: "标签名只允许包含中文、字母、数字或者中划线(-)不能以中划线开头且长度少于35个字符",
max: "最多选择 5 个标签"
}
})
})
</script>
</div>
<div class='project-right-side-contaner' id='code-parsing'>
<div class='d-flex-between mb-2'>
<div class='title fs-16 d-align-center'>
<img class='mr-1' height='32' src='/static/images/mjc_icon@2x.png' width='32'>
<span class='ai-file-name'>马建仓 AI 助手</span>
</div>
<div>
<i class='iconfont icon-close close gitee-icon-close'></i>
</div>
</div>
<div class='code-parsing-content'>
<div class='sub_title'></div>
<div class='markdown-body'></div>
<div class='bottom-content'>
<div class='js-code-parsing-img'></div>
<div class='ai_code_btns_simple'>
<div class='ai_code_btns_simple_container'>
<div class='mr-1 test-more'>尝试更多</div>
<div class='btn_box' data-text='代码解读' data-value='parsing'>
<div class='btn_box_title'>代码解读</div>
</div>
<div class='btn_box' data-text='代码找茬' data-value='analysis'>
<div class='btn_box_title'>代码找茬</div>
</div>
<div class='btn_box' data-text='代码优化' data-value='optimize'>
<div class='btn_box_title'>代码优化</div>
</div>
</div>
</div>
</div>
</div>
<div class='skeleton'>
<div class='line line1'></div>
<div class='line line2'></div>
<div class='line line3'></div>
<div class='line line4'></div>
<div class='line line1'></div>
<div class='line line2'></div>
<div class='line line3'></div>
<div class='line line4'></div>
<div class='line line1'></div>
<div class='line line2'></div>
<div class='line line3'></div>
<div class='line line4'></div>
</div>
<div class='resize-handle'>
<div class='resize-handle-line'></div>
</div>
<script src="/static/javascripts/markdown-it.min.js"></script>
<script src="https://cn-assets.gitee.com/assets/ai_code_parsing/app-642ecd30110bdb891918afedc215072c.js"></script>
<script>
$(function() {
var maxWidthPercentage = 0.5;
$("#code-parsing").resizable({
handles: 'e, w', // 通过左边调整大小
minWidth: 350, // 设置 代码解析框 的最小宽度
resize: function(event, ui) {
// 当调整大小时,确保 文件详情 的宽度不小于最小宽度
var parentWidth = $(this).parent().width();
var newWidthDiv2 = ui.size.width;
var newWidthDiv1 = parentWidth - newWidthDiv2;
// 计算最大宽度
var maxWidthDiv2 = parentWidth * maxWidthPercentage;
// 确保 代码解析框 不超过最大宽度
newWidthDiv2 = Math.min(newWidthDiv2, maxWidthDiv2);
// 确保 文件详情 至少有最小宽度
newWidthDiv1 = Math.max(parentWidth - newWidthDiv2, 750);
var percentageCode = (newWidthDiv2 / parentWidth) * 100;
var percentageProject = (newWidthDiv1 / parentWidth) * 100;
$('#code-parsing').css('width',percentageCode+"%")
$('#git-project-container').attr('style', 'width: ' + percentageProject + '% !important;');
}
});
})
</script>
</div>
</div>
</div>
<script>
(function() {
$(function() {
Tree.init();
return TreeCommentActions.init();
});
}).call(this);
</script>
<script>
function scrollToReadmeBox() {
var readmeBox = document.getElementById('git-readme');
if (readmeBox) {
const topPos = readmeBox.offsetTop;
window.scrollTo({ top: topPos, behavior: "smooth" });
}
}
$(".box-licence").click(function(event) {
$('.lisence-content').show()
$('.lisence-edit').show()
$('.readme-content').hide()
$('.readme-edit').hide()
$('.file_title_license').addClass('active-title')
$('.file_title_readme').removeClass('active-title')
scrollToReadmeBox()
});
</script>
<script src="/static/javascripts/file-icons.js"></script>
</div>
<script>
(function() {
var donateModal;
Gitee.modalHelper = new GiteeModalHelper({
alertText: '提示',
okText: '确定'
});
donateModal = new ProjectDonateModal({
el: '#project-donate-modal',
alipayUrl: '/tvkj/tw/alipay',
wepayUrl: '/tvkj/tw/wepay',
nameIsBlank: '名称不能为空',
nameTooLong: '名称过长(最多为 36 个字符)',
modalHelper: Gitee.modalHelper
});
if (null === 'true') {
donateModal.show();
}
$('#project-donate').on('click', function() {
return donateModal.show();
});
}).call(this);
</script>
<script>
Tree.initHighlightTheme('white')
</script>
</div>
<div class='gitee-project-extension'>
<div class='extension public'>1</div>
<div class='extension https'>https://gitee.com/tvkj/tw.git</div>
<div class='extension ssh'>git@gitee.com:tvkj/tw.git</div>
<div class='extension namespace'>tvkj</div>
<div class='extension repo'>tw</div>
<div class='extension name'>feilong</div>
<div class='extension branch'>main</div>
</div>
<script>
$(function() {
GitLab.GfmAutoComplete.dataSource = "/tvkj/tw/autocomplete_sources"
GitLab.GfmAutoComplete.Emoji.assetBase = '/assets/emoji'
GitLab.GfmAutoComplete.setup();
});
</script>
<footer id='git-footer-main'>
<div class='ui container'>
<div class='logo-row'>
<a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='logo-img' src='/static/images/logo-black.svg?t=158106666'>
</a></div>
<div class='name-important'>
深圳市奥思网络科技有限公司版权所有
</div>
<div class='ui two column grid d-flex-center'>
<div class='eight wide column git-footer-left'>
<div class='ui four column grid' id='footer-left'>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/all-about-git">Git 大全</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://help.gitee.com/learn-Git-Branching/">Git 命令学习</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://copycat.gitee.com/">CopyCat 代码克隆检测</a>
</div>
<div class='item'>
<a class="item" href="/appclient">APP与插件下载</a>
</div>
</div>
</div>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/gitee_reward">Gitee Reward</a>
</div>
<div class='item'>
<a class="item" href="/gitee-stars">Gitee 封面人物</a>
</div>
<div class='item'>
<a class="item" href="/gvp">GVP 项目</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://blog.gitee.com/">Gitee 博客</a>
</div>
<div class='item'>
<a class="item" href="/enterprises#nonprofit-plan">Gitee 公益计划</a>
</div>
<div class='item'>
<a class="item" href="https://gitee.com/features/gitee-go">Gitee 持续集成</a>
</div>
</div>
</div>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/api/v5/swagger">OpenAPI</a>
</div>
<div class='item'>
<a class="item" href="https://help.gitee.com">帮助文档</a>
</div>
<div class='item'>
<a class="item" href="/self_services">在线自助服务</a>
</div>
<div class='item'>
<a class="item" href="/help/articles/4378">更新日志</a>
</div>
</div>
</div>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/about_us">关于我们</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://www.oschina.net/news/131099/oschina-hiring">加入我们</a>
</div>
<div class='item'>
<a class="item" href="/terms">使用条款</a>
</div>
<div class='item'>
<a class="item" href="/oschina/git-osc/issues">意见建议</a>
</div>
<div class='item'>
<a class="item" href="/links.html">合作伙伴</a>
</div>
</div>
</div>
</div>
</div>
<div class='eight wide column right aligned followus git-footer-right'>
<div class='qrcode mr-1'>
<div class='qrcode-box'>
<img alt="技术交流QQ群" src="https://cn-assets.gitee.com/assets/contact_qr-5e2c2a8da453396590e56a545bce4974.jpg" />
</div>
<p class='mt-1 mini_app-text'>技术交流QQ群</p>
</div>
<div class='qrcode'>
<div class='qrcode-box'>
<img alt="微信服务号" class="weixin-qr" src="https://cn-assets.gitee.com/assets/qrcode-weixin@2x-b74cc97a2ea80123ea53a737f709836d.png" />
</div>
<p class='mt-1 weixin-text'>微信服务号</p>
</div>
<div class='phone-and-qq column'>
<div class='ui list official-support-container'>
<div class='item'></div>
<div class='item mail-and-zhihu'>
<a rel="nofollow" href="mailto: client@oschina.cn"><i class='iconfont icon-msg-mail'></i>
<span id='git-footer-email'>client#oschina.cn</span>
</a></div>
<div class='item tel'>
<a>
<i class='iconfont icon-tel'></i>
<span>企业版在线使用400-606-0201</span>
</a>
</div>
<div class='item tel'>
<a class='d-flex'>
<i class='iconfont icon-tel mt-05 mr-05'></i>
<span>专业版私有部署:</span>
<div>
<div>13670252304</div>
<div>13352947997</div>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class='bottombar'>
<div class='ui container'>
<div class='ui d-flex d-flex-between'>
<div class='seven wide column partner d-flex'>
<div class='open-atom d-flex-center'>
<img class="logo-openatom mr-1" alt="开放原子开源基金会" src="https://cn-assets.gitee.com/assets/logo-openatom-d083391cc8a54e283529f3fc11cc38ca.svg" />
<a target="_blank" rel="nofollow" href="https://www.openatom.org/">开放原子开源基金会</a>
<div class='sub-title ml-1'>合作代码托管平台</div>
</div>
<div class='report-12377 d-flex-center ml-3'>
<img class="report-12377__logo mr-1" alt="违法和不良信息举报中心" src="https://cn-assets.gitee.com/assets/12377@2x-1aa42ed2d2256f82a61ecf57be1ec244.png" />
<a target="_blank" rel="nofollow" href="https://12377.cn">违法和不良信息举报中心</a>
</div>
<div class='copyright ml-3'>
<a rel="nofollow" href="http://beian.miit.gov.cn/">粤ICP备12009483号</a>
</div>
</div>
<div class='nine wide column right aligned'>
<i class='icon world'></i>
<a href="/language/zh-CN">简 体</a>
/
<a href="/language/zh-TW">繁 體</a>
/
<a href="/language/en">English</a>
</div>
</div>
</div>
</div>
</footer>
<script>
var officialEmail = $('#git-footer-email').text()
$('#git-footer-main .icon-popup').popup({ position: 'bottom center' })
$('#git-footer-email').text(officialEmail.replace('#', '@'))
window.gon.popover_card_locale = {
follow:"关注",
unfollow:"已关注",
gvp_title: "GVP - Gitee 最有价值开源项目",
project: "项目",
org: "开源组织",
member: "",
author: "作者",
user_blocked: "该用户已被屏蔽或已注销",
net_error: "网络错误",
unknown_exception: "未知异常"
}
window.gon.select_message = {
placeholder: "请输入个人空间地址或完整的邮箱地址"
}
</script>
<script src="https://cn-assets.gitee.com/webpacks/popover_card-d759637c3dbef944c008.bundle.js"></script>
<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/webpacks/css/gitee_nps-ae0dbee40f6ddc72015a.css" />
<script src="https://cn-assets.gitee.com/webpacks/gitee_nps-fb459ed1da83f9bc24dc.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/gitee_icons-a30057b5990085b2c57b.bundle.js"></script>
<div class='side-toolbar'>
<div class='button toolbar-help'>
<i class='iconfont icon-help'></i>
</div>
<div class='ui popup left center dark'>点此查找更多帮助</div>
<div class='toolbar-help-dialog'>
<div class='toolbar-dialog-header'>
<h3 class='toolbar-dialog-title'>搜索帮助</h3>
<form class="toolbar-help-search-form" action="/help/load_keywords_data" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
<div class='ui icon input fluid toolbar-help-search'>
<input name='keywords' placeholder='请输入产品名称或问题' type='text'>
<i class='icon search'></i>
</div>
</form>
<i class='iconfont icon-close toolbar-dialog-close-icon'></i>
</div>
<div class='toolbar-dialog-content'>
<div class='toolbar-help-hot-search'>
<div class='toolbar-roll'>
<a class="init active" title="Git 命令在线学习" href="https://oschina.gitee.io/learn-git-branching/?utm_source==gitee-help-widget"><i class='Blue icon icon-command iconfont'></i>
<span>Git 命令在线学习</span>
</a><a class="init " title="如何在 Gitee 导入 GitHub 仓库" href="https://gitee.com/help/articles/4261?utm_source==gitee-help-widget"><i class='icon icon-clipboard iconfont orange'></i>
<span>如何在 Gitee 导入 GitHub 仓库</span>
</a></div>
<div class='toolbar-list'>
<div class='toolbar-list-item'>
<a href="/help/articles/4114">Git 仓库基础操作</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4166">企业版和社区版功能对比</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4191">SSH 公钥设置</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4194">如何处理代码冲突</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4232">仓库体积过大,如何减小?</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4279">如何找回被删除的仓库数据</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4283">Gitee 产品配额说明</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4284">GitHub仓库快速导入Gitee及同步更新</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4328">什么是 Release发行版</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4354">将 PHP 项目自动发布到 packagist.org</a>
</div>
</div>
</div>
<div class='toolbar-help-search-reseult'></div>
</div>
</div>
<script>
var opt = { position: 'left center'};
var $helpSideToolbar = $('.button.toolbar-help');
var $toolbarRoll = $('.toolbar-roll');
$(function() {
if (false) {
$helpSideToolbar.popup(opt).popup({lastResort:'left center'})
} else {
$helpSideToolbar.popup({lastResort:'left center'}).popup('show', opt);
setTimeout(function() {
$helpSideToolbar.popup('hide', opt);
}, 3000);
}
if ($toolbarRoll.length) {
setInterval(function() {
var $nextActiveLink = $toolbarRoll.find('a.active').next();
if (!$nextActiveLink.length) {
$nextActiveLink = $toolbarRoll.find('a:first-child');
}
$nextActiveLink.attr('class', 'active').siblings().removeClass('active init');
}, 5000);
}
})
</script>
<div class='popup button' id='home-comment'>
<i class='iconfont icon-comment'></i>
</div>
<div class='ui popup dark'>评论</div>
<div class='toolbar-appeal popup button'>
<i class='iconfont icon-report'></i>
</div>
<div class='ui popup dark'>
仓库举报
</div>
<script>
$('.toolbar-appeal').popup({ position: 'left center' });
</script>
<div class='button gotop popup' id='gotop'>
<i class='iconfont icon-top'></i>
</div>
<div class='ui popup dark'>回到顶部</div>
</div>
<div class='form modal normal-modal tiny ui' id='unlanding-complaint-modal'>
<i class='iconfont icon-close close'></i>
<div class='header'>
登录提示
</div>
<div class='container actions'>
<div class='content'>
该操作需登录 Gitee 帐号,请先登录后再操作。
</div>
<div class='ui orange icon large button ok'>
立即登录
</div>
<div class='ui button blank cancel'>
没有帐号,去注册
</div>
</div>
</div>
<script>
var $elm = $('.toolbar-appeal');
$elm.on('click', function() {
var modals = $("#unlanding-complaint-modal.normal-modal");
if (modals.length > 1) {
modals.eq(0).modal('show');
} else {
modals.modal('show');
}
})
$("#unlanding-complaint-modal.normal-modal").modal({
onDeny: function() {
window.location.href = "/signup?from=";
},
onApprove: function() {
window.location.href = "/login?from=";
}
})
</script>
<style>
.side-toolbar .bdsharebuttonbox a {
font-size: 24px;
color: white !important;
opacity: 0.9;
margin: 6px 6px 0px 6px;
background-image: none;
text-indent: 0;
height: auto;
width: auto;
}
</style>
<style>
#udesk_btn a {
margin: 0px 20px 167px 0px !important;
}
</style>
<script>
(function() {
$('#project-user-message').popup({
position: 'left center'
});
}).call(this);
</script>
<script>
Gitee.initSideToolbar({
hasComment: true,
commentUrl: '/tvkj/tw#tree_comm_title'
})
</script>
<style>
.gitee-stars-main-widget {
display: none;
position: fixed;
left: 0;
bottom: 0;
z-index: 106; }
.gitee-stars-main-widget .close-icon {
width: 20px;
right: 10px;
position: absolute;
top: 0px;
cursor: pointer; }
.gitee-stars-main-widget .people-image {
width: 200px;
margin: 0 10px; }
.gitee-stars-main-widget.gitee-stars-widget .close-icon {
left: 20px; }
</style>
<div class='gitee-stars-main-widget pendan-widget'>
<a target="_blank" href="https://ai.gitee.com/events/iluvatar-ai-app-contest/show"><img class="people-image" src="https://foruda.gitee.com/images/1724811360276034448/a270a887_8829481.png" alt="A270a887 8829481" />
<img class="close-icon" src="https://foruda.gitee.com/images/1724636799681800379/3d7a4017_8829481.png" alt="3d7a4017 8829481" />
</a></div>
<script>
$(function () {
var $giteeStarsWidget = $('.gitee-stars-main-widget')
var cookieKey = "visit-gitee--2024-08-28"
if ($.cookie(cookieKey) == 1) {
$giteeStarsWidget.hide()
} else {
$giteeStarsWidget.show()
}
$giteeStarsWidget.on('click', '.close-icon', function (e) {
e.preventDefault()
$.cookie(cookieKey, 1, {path: '/', expires: 60})
$giteeStarsWidget.hide()
})
})
</script>
<script>
(function() {
this.__gac = {
domain: 'www.oschina.net'
};
}).call(this);
</script>
<script src="https://cn-assets.gitee.com/webpacks/build_status-a0b08cd330f9f9ab2e6c.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/scan_status-9d8541af0799261fce2a.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/mermaid_render-a13de7e2b5d6f4663bb5.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/check_runs-8fe2f388fec18d6b424e.bundle.js"></script>
</body>
</html>