Skip to content

Commit

Permalink
Merge pull request #72 from nix-community/trustix-nix-r13y-web
Browse files Browse the repository at this point in the history
trustix-nix-r13y-web: add package
  • Loading branch information
adisbladis authored Oct 17, 2022
2 parents 1705ebe + f4598f9 commit 207627c
Show file tree
Hide file tree
Showing 130 changed files with 12,648 additions and 2,200 deletions.
16 changes: 8 additions & 8 deletions .reuse/dep5
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ Upstream-Name: trustix
Upstream-Contact: adisbladis <adisbladis@gmail.com>
Source: https://github.com/nix-community/trustix

Files: .envrc Makefile Procfile default.nix examples/nixops-deployment.nix examples/nixos-shell.nix flake-fetch.nix flake.nix nixos/default.nix packages/go-lib/.envrc packages/go-lib/go.mod packages/go-lib/shell.nix packages/trustix-doc/Procfile packages/trustix-doc/default.nix packages/trustix-doc/doc_old/Makefile packages/trustix-doc/doc_old/shell.nix packages/trustix-nix-reprod/.envrc packages/trustix-nix-reprod/Procfile packages/trustix-nix-reprod/default.nix packages/trustix-nix-reprod/go.mod packages/trustix-nix-reprod/mk-proto packages/trustix-nix-reprod/shell.nix packages/trustix-nix/.envrc packages/trustix-nix/Procfile packages/trustix-nix/default.nix packages/trustix-nix/go.mod packages/trustix-nix/nixos/binarycache.nix packages/trustix-nix/nixos/default.nix packages/trustix-nix/nixos/post-build-hook.nix packages/trustix-nix/shell.nix packages/trustix-proto/.envrc packages/trustix-proto/Makefile packages/trustix-proto/Procfile packages/trustix-proto/go.mod packages/trustix-proto/shell.nix packages/trustix/.envrc packages/trustix/Procfile packages/trustix/default.nix packages/trustix/go.mod packages/trustix/nixos/default.nix packages/trustix/nixos/test.nix packages/trustix/shell.nix packages/trustix/tests/default.nix packages/unixtransport/.envrc packages/unixtransport/go.mod packages/unixtransport/shell.nix pkgs.nix shell.nix
Files: .envrc Makefile Procfile default.nix examples/nixops-deployment.nix examples/nixos-shell.nix flake-fetch.nix flake.nix nixos/default.nix packages/go-lib/.envrc packages/go-lib/go.mod packages/go-lib/shell.nix packages/trustix-doc/Procfile packages/trustix-doc/default.nix packages/trustix-doc/doc_old/Makefile packages/trustix-doc/doc_old/shell.nix packages/trustix-nix-r13y-web/.envrc packages/trustix-nix-r13y-web/.eslintignore packages/trustix-nix-r13y-web/.eslintrc.js packages/trustix-nix-r13y-web/.prettierignore packages/trustix-nix-r13y-web/.prettierrc.json packages/trustix-nix-r13y-web/Procfile packages/trustix-nix-r13y-web/default.nix packages/trustix-nix-r13y-web/mk-proto packages/trustix-nix-r13y-web/package.json packages/trustix-nix-r13y-web/postcss.config.js packages/trustix-nix-r13y-web/shell.nix packages/trustix-nix-r13y-web/tailwind.config.js packages/trustix-nix-r13y-web/tsconfig.json packages/trustix-nix-r13y/.envrc packages/trustix-nix-r13y/Procfile packages/trustix-nix-r13y/default.nix packages/trustix-nix-r13y/go.mod packages/trustix-nix-r13y/mk-proto packages/trustix-nix-r13y/shell.nix packages/trustix-nix/.envrc packages/trustix-nix/Procfile packages/trustix-nix/default.nix packages/trustix-nix/go.mod packages/trustix-nix/nixos/binarycache.nix packages/trustix-nix/nixos/default.nix packages/trustix-nix/nixos/post-build-hook.nix packages/trustix-nix/shell.nix packages/trustix-proto/.envrc packages/trustix-proto/Makefile packages/trustix-proto/Procfile packages/trustix-proto/go.mod packages/trustix-proto/shell.nix packages/trustix/.envrc packages/trustix/Procfile packages/trustix/default.nix packages/trustix/go.mod packages/trustix/nixos/default.nix packages/trustix/nixos/test.nix packages/trustix/shell.nix packages/trustix/tests/default.nix packages/unixtransport/.envrc packages/unixtransport/go.mod packages/unixtransport/shell.nix pkgs.nix shell.nix
Copyright: Copyright © 2020-2022 The Trustix Authors
License: MIT

Files: .github/workflows/doc.yml .github/workflows/golangci-lint.yml .github/workflows/gomod2nix.yml .github/workflows/licenses.yml .github/workflows/nix-build.yml .github/workflows/python.yml .github/workflows/treefmt.yml
Copyright: Copyright © 2020-2022 The Trustix Authors
License: CC0-1.0

Files: .gitignore .reuse/dep5 packages/trustix-doc/.gitignore packages/trustix-doc/doc_old/.gitignore packages/trustix-nix-reprod/.gitignore packages/trustix-nix/.gitignore packages/trustix-proto/.gitignore packages/trustix/.gitignore packages/unixtransport/.gitignore
Files: .gitignore .reuse/dep5 packages/trustix-doc/.gitignore packages/trustix-doc/doc_old/.gitignore packages/trustix-nix-r13y-web/.gitignore packages/trustix-nix-r13y/.gitignore packages/trustix-nix/.gitignore packages/trustix-proto/.gitignore packages/trustix/.gitignore packages/unixtransport/.gitignore
Copyright: Copyright © 2020-2022 The Trustix Authors
License: CC0-1.0

Files: README.md packages/go-lib/README.md packages/trustix-doc/doc_old/comparison.md packages/trustix-doc/src/SUMMARY.md packages/trustix-doc/src/about.md packages/trustix-doc/src/api.md packages/trustix-doc/src/binarycache.md packages/trustix-doc/src/hacking.md packages/trustix-doc/src/intro.md packages/trustix-doc/src/nixos.md packages/trustix-doc/src/publishing.md packages/trustix-doc/src/subscribing.md packages/trustix-proto/doc.md packages/unixtransport/README.md
Files: README.md packages/go-lib/README.md packages/trustix-doc/doc_old/comparison.md packages/trustix-doc/src/SUMMARY.md packages/trustix-doc/src/about.md packages/trustix-doc/src/api.md packages/trustix-doc/src/binarycache.md packages/trustix-doc/src/hacking.md packages/trustix-doc/src/intro.md packages/trustix-doc/src/nixos.md packages/trustix-doc/src/publishing.md packages/trustix-doc/src/subscribing.md packages/trustix-nix-r13y-web/README.md packages/trustix-nix-r13y-web/src/chart/README.md packages/trustix-proto/doc.md packages/unixtransport/README.md
Copyright: Copyright © 2020-2022 The Trustix Authors
License: CC-BY-SA-4.0

Expand All @@ -27,21 +27,21 @@ Files: assets/tweag.png
Copyright: Copyright © 2021 The Tweag IO
License: LicenseRef-all-rights-reserved

Files: flake.lock packages/go-lib/go.sum packages/go-lib/gomod2nix.toml packages/trustix-nix-reprod/go.sum packages/trustix-nix-reprod/gomod2nix.toml packages/trustix-nix/go.sum packages/trustix-nix/gomod2nix.toml packages/trustix-proto/go.sum packages/trustix-proto/gomod2nix.toml packages/trustix/go.sum packages/trustix/gomod2nix.toml
Files: flake.lock packages/go-lib/go.sum packages/go-lib/gomod2nix.toml packages/trustix-nix-r13y-web/package-lock.json packages/trustix-nix-r13y/go.sum packages/trustix-nix-r13y/gomod2nix.toml packages/trustix-nix/go.sum packages/trustix-nix/gomod2nix.toml packages/trustix-proto/go.sum packages/trustix-proto/gomod2nix.toml packages/trustix/go.sum packages/trustix/gomod2nix.toml
Copyright: Copyright © 2020-2022 The Trustix Authors
License: CC0-1.0

Files: packages/trustix-doc/book.toml packages/trustix-doc/doc_old/numeric.csl packages/trustix-doc/doc_old/references.bib packages/trustix-doc/doc_old/trustix-gossip.puml packages/trustix-doc/doc_old/trustix-submission.puml packages/trustix-doc/doc_old/trustix-substitution.puml
Copyright: Copyright © 2020-2022 The Trustix Authors
License: CC-BY-SA-4.0

Files: packages/trustix-nix-reprod/examples/config.toml packages/trustix-nix-reprod/sqlc.yaml packages/trustix-nix/dev/cache-priv-key.pem packages/trustix-nix/dev/cache-pub-key.pem packages/trustix/config.toml treefmt.toml
Files: packages/trustix-nix-r13y-web/src/api/api_connectweb.ts packages/trustix-nix-r13y-web/src/api/api_pb.ts packages/trustix-nix-r13y/reprod-api/api.pb.go packages/trustix-nix-r13y/reprod-api/reprod_apiconnect/api.connect.go packages/trustix-nix-r13y/sql-cache/queries/diffoscope.sql packages/trustix-nix-r13y/sql-cache/schema/20221005142925_initial.sql packages/trustix-nix-r13y/sql/queries/derivations.sql packages/trustix-nix-r13y/sql/queries/eval.sql packages/trustix-nix-r13y/sql/queries/logs.sql packages/trustix-nix-r13y/sql/queries/reprod.sql packages/trustix-nix-r13y/sql/queries/suggest.sql packages/trustix-nix-r13y/sql/schema/20220818142927_initial.sql packages/trustix-nix-r13y/sql/schema/20220904150640_logs.sql
Copyright: Copyright © 2020-2022 The Trustix Authors
License: CC0-1.0
License: GPL-3.0-only

Files: packages/trustix-nix-reprod/reprod-api/api.pb.go packages/trustix-nix-reprod/reprod-api/reprod_apiconnect/api.connect.go packages/trustix-nix-reprod/sql-cache/queries/diffoscope.sql packages/trustix-nix-reprod/sql-cache/schema/20221005142925_initial.sql packages/trustix-nix-reprod/sql/queries/derivations.sql packages/trustix-nix-reprod/sql/queries/eval.sql packages/trustix-nix-reprod/sql/queries/logs.sql packages/trustix-nix-reprod/sql/queries/reprod.sql packages/trustix-nix-reprod/sql/queries/suggest.sql packages/trustix-nix-reprod/sql/schema/20220818142927_initial.sql packages/trustix-nix-reprod/sql/schema/20220904150640_logs.sql
Files: packages/trustix-nix-r13y/examples/config.toml packages/trustix-nix-r13y/sqlc.yaml packages/trustix-nix/dev/cache-priv-key.pem packages/trustix-nix/dev/cache-pub-key.pem packages/trustix/config.toml treefmt.toml
Copyright: Copyright © 2020-2022 The Trustix Authors
License: GPL-3.0-only
License: CC0-1.0

Files: packages/trustix-proto/api/apiconnect/api.connect.go packages/trustix-proto/rpc/rpcconnect/rpc.connect.go
Copyright: Copyright © 2020-2022 The Trustix Authors
Expand Down
2 changes: 2 additions & 0 deletions Procfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
trustix: bash -c "cd packages/trustix && nix-shell --run hivemind"
trustix-nix: bash -c "./tools/wait_for_file $TRUSTIX_RPC && cd packages/trustix-nix && nix-shell --run hivemind"
trustix-nix-r13y: bash -c "cd packages/trustix-nix-r13y && nix-shell --run hivemind"
trustix-nix-r13y-web: bash -c "cd packages/trustix-nix-r13y-web && nix-shell --run hivemind"
trustix-proto: bash -c "cd packages/trustix-proto && nix-shell --run hivemind"
trustix-doc: bash -c "cd packages/trustix-doc && nix-shell --run hivemind"
3 changes: 2 additions & 1 deletion checks/golangci-lint
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ set -euo pipefail
args="./... --out-format github-actions"

ls ./packages/*/go.mod | xargs dirname | while read pkgdir; do
nix-shell "$pkgdir/shell.nix" --run "cd $pkgdir && golangci-lint run $args"
echo "Checking $pkgdir"
nix-shell "$pkgdir/shell.nix" --run "cd $pkgdir && golangci-lint run --timeout 15m0s $args"
done
2 changes: 1 addition & 1 deletion default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ pkgs ? import ./pkgs.nix { } }:
{
inherit (pkgs) trustix trustix-doc trustix-nix trustix-nix-reprod;
inherit (pkgs) trustix trustix-doc trustix-nix trustix-nix-r13y trustix-nix-r13y-web;
}
8 changes: 7 additions & 1 deletion packages/go-lib/executor/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,11 @@ func NewParallellExecutor() *ParallellExecutor {
}
}

func (e *ParallellExecutor) Add(fn func() error) {
func (e *ParallellExecutor) Add(fn func() error) error {
if e.err != nil {
return e.err
}

e.wg.Add(1)

go func() {
Expand All @@ -42,6 +46,8 @@ func (e *ParallellExecutor) Add(fn func() error) {
e.errChan <- err
}
}()

return nil
}

func (e *ParallellExecutor) Wait() error {
Expand Down
2 changes: 1 addition & 1 deletion packages/go-lib/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.18

require (
github.com/stretchr/testify v1.8.0
golang.org/x/exp v0.0.0-20221004215720-b9f4876ce741
golang.org/x/exp v0.0.0-20221010202428-3a778c567f61
)

require (
Expand Down
4 changes: 2 additions & 2 deletions packages/go-lib/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
golang.org/x/exp v0.0.0-20221004215720-b9f4876ce741 h1:fGZugkZk2UgYBxtpKmvub51Yno1LJDeEsRp2xGD+0gY=
golang.org/x/exp v0.0.0-20221004215720-b9f4876ce741/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
golang.org/x/exp v0.0.0-20221010202428-3a778c567f61 h1:9echpU8vWVULSj2oFTtlY8mpPya+ED1L5xlaCaEEc+M=
golang.org/x/exp v0.0.0-20221010202428-3a778c567f61/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Expand Down
4 changes: 2 additions & 2 deletions packages/go-lib/gomod2nix.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ schema = 3
version = "v1.8.0"
hash = "sha256-LDxBAebK+A06y4vbH7cd1sVBOameIY81Xm8/9OPZh7o="
[mod."golang.org/x/exp"]
version = "v0.0.0-20221004215720-b9f4876ce741"
hash = "sha256-j4A3FnOJBkybLjkkeXg5ptBLzWCepOojr/MV96u/MaI="
version = "v0.0.0-20221010202428-3a778c567f61"
hash = "sha256-2aATMtazbT3i+X3m0Ju54GKOggcyeX9dAJFxO+H5IxQ="
[mod."gopkg.in/yaml.v3"]
version = "v3.0.1"
hash = "sha256-FqL9TKYJ0XkNwJFnq9j0VvJ5ZUU1RvH/52h/f5bkYAU="
47 changes: 37 additions & 10 deletions packages/go-lib/set/set.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,25 +51,40 @@ func (s *Set[T]) Values() []T {
return values
}

// Check if a set has member of value.
func (s *Set[T]) has(value T) bool {
_, ok := s.values[value]
return ok
}

// Check if a set has member of value.
func (s *Set[T]) Has(value T) bool {
if s.mux != nil {
s.mux.RLock()
defer s.mux.RUnlock()
}

_, ok := s.values[value]
return ok
return s.has(value)
}

func (s *Set[T]) add(value T) {
s.values[value] = struct{}{}
}

// Add a member.
func (s *Set[T]) Add(value T) {
func (s *Set[T]) Add(value T) (added bool) {
if s.mux != nil {
s.mux.Lock()
defer s.mux.Unlock()
}

s.values[value] = struct{}{}
if s.has(value) {
return false
}

s.add(value)

return true
}

// Remove a member.
Expand All @@ -88,18 +103,22 @@ func (s *Set[T]) Union(set *Set[T]) *Set[T] {
s.mux.RLock()
defer s.mux.RUnlock()
}
if set.mux != nil {
set.mux.RLock()
defer set.mux.RUnlock()
}

us := &Set[T]{
// Note: Size is the minimum possible size of the new set
values: make(map[T]struct{}, len(s.values)),
}

for v := range s.values {
us.Add(v)
us.add(v)
}

for v := range set.values {
us.Add(v)
us.add(v)
}

return us
Expand All @@ -117,7 +136,7 @@ func (s *Set[T]) Copy() *Set[T] {
}

for v := range s.values {
copy.Add(v)
copy.add(v)
}

return copy
Expand All @@ -129,14 +148,18 @@ func (s *Set[T]) Diff(set *Set[T]) *Set[T] {
s.mux.RLock()
defer s.mux.RUnlock()
}
if set.mux != nil {
set.mux.RLock()
defer set.mux.RUnlock()
}

diff := &Set[T]{
values: make(map[T]struct{}),
}

for v := range s.values {
if !set.Has(v) {
diff.Add(v)
if !set.has(v) {
diff.add(v)
}
}

Expand All @@ -149,8 +172,12 @@ func (s *Set[T]) Update(set *Set[T]) {
s.mux.Lock()
defer s.mux.Unlock()
}
if set.mux != nil {
set.mux.RLock()
defer set.mux.RUnlock()
}

for v := range set.values {
s.Add(v)
s.add(v)
}
}
2 changes: 1 addition & 1 deletion packages/trustix-doc/src/hacking.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ The main documentation package that aggregates documentation from the various su
This is a supplemental daemon to the main Trustix daemon that layers some knowledge about Nix on top of the generic log functionality.
It contains a [post-build hook](https://www.tweag.io/blog/2019-11-21-untrusted-ci/) used to submit newly built packages to the logs, a binary cache HTTP interface and a development tool to submit already built closures.

- [trustix-nix-reprod](https://github.com/nix-community/trustix/blob/master/packages/trustix-nix-reprod)
- [trustix-nix-r13y](https://github.com/nix-community/trustix/blob/master/packages/trustix-nix-r13y)

This package is an implementation of a reproducibility tracker backed by logs.

Expand Down
File renamed without changes.
1 change: 1 addition & 0 deletions packages/trustix-nix-r13y-web/.eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/dist
25 changes: 25 additions & 0 deletions packages/trustix-nix-r13y-web/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* eslint-disable */
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:solid/recommended",
"plugin:sonarjs/recommended",
],
overrides: [],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
plugins: [
"@typescript-eslint",
"solid",
"sonarjs",
],
rules: {},
};
2 changes: 2 additions & 0 deletions packages/trustix-nix-r13y-web/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules
dist
5 changes: 5 additions & 0 deletions packages/trustix-nix-r13y-web/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
build
coverage
dist
result
src/api/*.ts
3 changes: 3 additions & 0 deletions packages/trustix-nix-r13y-web/.prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"trailingComma": "all"
}
2 changes: 2 additions & 0 deletions packages/trustix-nix-r13y-web/Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
serve: npm install && npm run dev
proto: (proto_script=$(readlink -f ./mk-proto); cd ../trustix-nix-r13y/reprod-api && reflex -r '\.proto$' "$proto_script")
34 changes: 34 additions & 0 deletions packages/trustix-nix-r13y-web/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Usage

Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`.

This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template.

```bash
$ npm install # or pnpm install or yarn install
```

### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)

## Available Scripts

In the project directory, you can run:

### `npm dev` or `npm start`

Runs the app in the development mode.<br>
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.<br>

### `npm run build`

Builds the app for production to the `dist` folder.<br>
It correctly bundles Solid in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.<br>
Your app is ready to be deployed!

## Deployment

You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
7 changes: 7 additions & 0 deletions packages/trustix-nix-r13y-web/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{ npmlock2nix, lib, gitignoreSource }:

npmlock2nix.build {
src = gitignoreSource ./.;
installPhase = "cp -r dist $out";
buildCommands = [ "npm run build" ];
}
21 changes: 21 additions & 0 deletions packages/trustix-nix-r13y-web/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!--
Copyright © 2020-2022 The Trustix Authors
SPDX-License-Identifier: GPL-3.0-only
-->

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<title>Trustix r13y - Reproducibility tracking</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>

<script src="/src/index.tsx" type="module"></script>
</body>
</html>
9 changes: 9 additions & 0 deletions packages/trustix-nix-r13y-web/mk-proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
exec protoc -I ../trustix-nix-r13y/reprod-api \
--es_out src/api \
--es_opt target=ts \
--connect-web_out src/api \
--connect-web_opt target=ts \
../trustix-nix-r13y/reprod-api/*.proto
Loading

0 comments on commit 207627c

Please sign in to comment.