mirror of
https://github.com/kanidm/kanidm.git
synced 2025-02-23 20:47:01 +01:00
deploy: 36f1efa559
This commit is contained in:
parent
c2d75bff33
commit
970ea875b7
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Inside an entry, the key-value pairs are stored in these [`Value`] types. The components of the [`Value`] module allow storage and transformation of various types of input into strongly typed values, allows their comparison, filtering and more. It also has the code for serialising these into a form for the backend that can be persistent into the `Backend`."><meta name="keywords" content="rust, rustlang, rust-lang, value"><title>kanidmd_lib::value - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-6827029ac823cab7.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-8af5e100b21cd173.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-c55e1eb52e1886b4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../kanidmd_lib/index.html"><div class="logo-container"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../kanidmd_lib/index.html"><div class="logo-container"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></div></a><h2 class="location"><a href="#">Module value</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">kanidmd_lib</a>::<wbr><a class="mod" href="#">value</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/kanidmd_lib/value.rs.html#1-1849">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Inside an entry, the key-value pairs are stored in these <a href="enum.Value.html" title="Value"><code>Value</code></a> types. The components of
|
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Inside an entry, the key-value pairs are stored in these [`Value`] types. The components of the [`Value`] module allow storage and transformation of various types of input into strongly typed values, allows their comparison, filtering and more. It also has the code for serialising these into a form for the backend that can be persistent into the `Backend`."><meta name="keywords" content="rust, rustlang, rust-lang, value"><title>kanidmd_lib::value - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-6827029ac823cab7.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../../static.files/ayu-8af5e100b21cd173.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="../../static.files/main-c55e1eb52e1886b4.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="sidebar-logo" href="../../kanidmd_lib/index.html"><div class="logo-container"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../kanidmd_lib/index.html"><div class="logo-container"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></div></a><h2 class="location"><a href="#">Module value</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">kanidmd_lib</a>::<wbr><a class="mod" href="#">value</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/kanidmd_lib/value.rs.html#1-1870">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Inside an entry, the key-value pairs are stored in these <a href="enum.Value.html" title="Value"><code>Value</code></a> types. The components of
|
||||||
the <a href="enum.Value.html" title="Value"><code>Value</code></a> module allow storage and transformation of various types of input into strongly
|
the <a href="enum.Value.html" title="Value"><code>Value</code></a> module allow storage and transformation of various types of input into strongly
|
||||||
typed values, allows their comparison, filtering and more. It also has the code for serialising
|
typed values, allows their comparison, filtering and more. It also has the code for serialising
|
||||||
these into a form for the backend that can be persistent into the <a href="../be/struct.Backend.html"><code>Backend</code></a>.</p>
|
these into a form for the backend that can be persistent into the <a href="../be/struct.Backend.html"><code>Backend</code></a>.</p>
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1431,8 +1431,6 @@
|
||||||
<a href="#1431" id="1431">1431</a>
|
<a href="#1431" id="1431">1431</a>
|
||||||
<a href="#1432" id="1432">1432</a>
|
<a href="#1432" id="1432">1432</a>
|
||||||
<a href="#1433" id="1433">1433</a>
|
<a href="#1433" id="1433">1433</a>
|
||||||
<a href="#1434" id="1434">1434</a>
|
|
||||||
<a href="#1435" id="1435">1435</a>
|
|
||||||
</pre><pre class="rust"><code><span class="kw">use </span>std::convert::TryFrom;
|
</pre><pre class="rust"><code><span class="kw">use </span>std::convert::TryFrom;
|
||||||
<span class="kw">use </span>std::fs;
|
<span class="kw">use </span>std::fs;
|
||||||
<span class="kw">use </span>std::path::{Path, PathBuf};
|
<span class="kw">use </span>std::path::{Path, PathBuf};
|
||||||
|
@ -1719,8 +1717,7 @@
|
||||||
uat: <span class="prelude-ty">Option</span><String>,
|
uat: <span class="prelude-ty">Option</span><String>,
|
||||||
eventid: Uuid,
|
eventid: Uuid,
|
||||||
) -> <span class="prelude-ty">Result</span><WhoamiResponse, OperationError> {
|
) -> <span class="prelude-ty">Result</span><WhoamiResponse, OperationError> {
|
||||||
<span class="comment">// TODO #62: Move this to IdmServer!!!
|
<span class="comment">// Begin a read
|
||||||
// Begin a read
|
|
||||||
</span><span class="kw">let </span>ct = duration_from_epoch_now();
|
</span><span class="kw">let </span>ct = duration_from_epoch_now();
|
||||||
<span class="kw">let </span><span class="kw-2">mut </span>idms_prox_read = <span class="self">self</span>.idms.proxy_read().<span class="kw">await</span>;
|
<span class="kw">let </span><span class="kw-2">mut </span>idms_prox_read = <span class="self">self</span>.idms.proxy_read().<span class="kw">await</span>;
|
||||||
<span class="comment">// Make an event from the whoami request. This will process the event and
|
<span class="comment">// Make an event from the whoami request. This will process the event and
|
||||||
|
@ -1736,7 +1733,6 @@
|
||||||
<span class="macro">admin_error!</span>(<span class="question-mark">?</span>e, <span class="string">"Invalid identity"</span>);
|
<span class="macro">admin_error!</span>(<span class="question-mark">?</span>e, <span class="string">"Invalid identity"</span>);
|
||||||
e
|
e
|
||||||
})<span class="question-mark">?</span>;
|
})<span class="question-mark">?</span>;
|
||||||
|
|
||||||
<span class="kw">let </span>srch =
|
<span class="kw">let </span>srch =
|
||||||
SearchEvent::from_whoami_request(ident, <span class="kw-2">&</span>idms_prox_read.qs_read).map_err(|e| {
|
SearchEvent::from_whoami_request(ident, <span class="kw-2">&</span>idms_prox_read.qs_read).map_err(|e| {
|
||||||
<span class="macro">admin_error!</span>(<span class="question-mark">?</span>e, <span class="string">"Failed to begin whoami"</span>);
|
<span class="macro">admin_error!</span>(<span class="question-mark">?</span>e, <span class="string">"Failed to begin whoami"</span>);
|
||||||
|
|
|
@ -1847,6 +1847,27 @@
|
||||||
<a href="#1847" id="1847">1847</a>
|
<a href="#1847" id="1847">1847</a>
|
||||||
<a href="#1848" id="1848">1848</a>
|
<a href="#1848" id="1848">1848</a>
|
||||||
<a href="#1849" id="1849">1849</a>
|
<a href="#1849" id="1849">1849</a>
|
||||||
|
<a href="#1850" id="1850">1850</a>
|
||||||
|
<a href="#1851" id="1851">1851</a>
|
||||||
|
<a href="#1852" id="1852">1852</a>
|
||||||
|
<a href="#1853" id="1853">1853</a>
|
||||||
|
<a href="#1854" id="1854">1854</a>
|
||||||
|
<a href="#1855" id="1855">1855</a>
|
||||||
|
<a href="#1856" id="1856">1856</a>
|
||||||
|
<a href="#1857" id="1857">1857</a>
|
||||||
|
<a href="#1858" id="1858">1858</a>
|
||||||
|
<a href="#1859" id="1859">1859</a>
|
||||||
|
<a href="#1860" id="1860">1860</a>
|
||||||
|
<a href="#1861" id="1861">1861</a>
|
||||||
|
<a href="#1862" id="1862">1862</a>
|
||||||
|
<a href="#1863" id="1863">1863</a>
|
||||||
|
<a href="#1864" id="1864">1864</a>
|
||||||
|
<a href="#1865" id="1865">1865</a>
|
||||||
|
<a href="#1866" id="1866">1866</a>
|
||||||
|
<a href="#1867" id="1867">1867</a>
|
||||||
|
<a href="#1868" id="1868">1868</a>
|
||||||
|
<a href="#1869" id="1869">1869</a>
|
||||||
|
<a href="#1870" id="1870">1870</a>
|
||||||
</pre><pre class="rust"><code><span class="doccomment">//! Inside an entry, the key-value pairs are stored in these [`Value`] types. The components of
|
</pre><pre class="rust"><code><span class="doccomment">//! Inside an entry, the key-value pairs are stored in these [`Value`] types. The components of
|
||||||
//! the [`Value`] module allow storage and transformation of various types of input into strongly
|
//! the [`Value`] module allow storage and transformation of various types of input into strongly
|
||||||
//! typed values, allows their comparison, filtering and more. It also has the code for serialising
|
//! typed values, allows their comparison, filtering and more. It also has the code for serialising
|
||||||
|
@ -1857,9 +1878,11 @@
|
||||||
<span class="kw">use </span>std::collections::BTreeSet;
|
<span class="kw">use </span>std::collections::BTreeSet;
|
||||||
<span class="kw">use </span>std::convert::TryFrom;
|
<span class="kw">use </span>std::convert::TryFrom;
|
||||||
<span class="kw">use </span>std::fmt;
|
<span class="kw">use </span>std::fmt;
|
||||||
|
<span class="kw">use </span>std::fmt::Formatter;
|
||||||
<span class="kw">use </span>std::str::FromStr;
|
<span class="kw">use </span>std::str::FromStr;
|
||||||
<span class="kw">use </span>std::time::Duration;
|
<span class="kw">use </span>std::time::Duration;
|
||||||
|
|
||||||
|
<span class="kw">use </span><span class="kw">crate</span>::valueset::uuid_to_proto_string;
|
||||||
<span class="attr">#[cfg(test)]
|
<span class="attr">#[cfg(test)]
|
||||||
</span><span class="kw">use </span>base64::{engine::general_purpose, Engine <span class="kw">as _</span>};
|
</span><span class="kw">use </span>base64::{engine::general_purpose, Engine <span class="kw">as _</span>};
|
||||||
<span class="kw">use </span>compact_jwt::JwsSigner;
|
<span class="kw">use </span>compact_jwt::JwsSigner;
|
||||||
|
@ -2615,7 +2638,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
<span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
|
<span class="attr">#[derive(Clone, PartialEq, Eq)]
|
||||||
</span><span class="kw">pub struct </span>Session {
|
</span><span class="kw">pub struct </span>Session {
|
||||||
<span class="kw">pub </span>label: String,
|
<span class="kw">pub </span>label: String,
|
||||||
<span class="kw">pub </span>expiry: <span class="prelude-ty">Option</span><OffsetDateTime>,
|
<span class="kw">pub </span>expiry: <span class="prelude-ty">Option</span><OffsetDateTime>,
|
||||||
|
@ -2625,6 +2648,25 @@
|
||||||
<span class="kw">pub </span>scope: SessionScope,
|
<span class="kw">pub </span>scope: SessionScope,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<span class="kw">impl </span>fmt::Debug <span class="kw">for </span>Session {
|
||||||
|
<span class="kw">fn </span>fmt(<span class="kw-2">&</span><span class="self">self</span>, f: <span class="kw-2">&mut </span>Formatter) -> fmt::Result {
|
||||||
|
<span class="kw">let </span>issuer = <span class="kw">match </span><span class="self">self</span>.issued_by {
|
||||||
|
IdentityId::User(u) => <span class="macro">format!</span>(<span class="string">"User - {}"</span>, uuid_to_proto_string(u)),
|
||||||
|
IdentityId::Synch(u) => <span class="macro">format!</span>(<span class="string">"Synch - {}"</span>, uuid_to_proto_string(u)),
|
||||||
|
IdentityId::Internal => <span class="string">"Internal"</span>.to_string(),
|
||||||
|
};
|
||||||
|
<span class="kw">let </span>expiry = <span class="kw">match </span><span class="self">self</span>.expiry {
|
||||||
|
<span class="prelude-val">Some</span>(e) => e.to_string(),
|
||||||
|
<span class="prelude-val">None </span>=> <span class="string">"never"</span>.to_string(),
|
||||||
|
};
|
||||||
|
<span class="macro">write!</span>(
|
||||||
|
f,
|
||||||
|
<span class="string">"expiry: {}, issued at: {}, issued by: {}, credential id: {}, scope: {:?}"</span>,
|
||||||
|
expiry, <span class="self">self</span>.issued_at, issuer, <span class="self">self</span>.cred_id, <span class="self">self</span>.scope
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
<span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
|
<span class="attr">#[derive(Clone, Debug, PartialEq, Eq)]
|
||||||
</span><span class="kw">pub struct </span>Oauth2Session {
|
</span><span class="kw">pub struct </span>Oauth2Session {
|
||||||
<span class="kw">pub </span>parent: Uuid,
|
<span class="kw">pub </span>parent: Uuid,
|
||||||
|
|
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue