Browse Source

Merge remote-tracking branch 'gogits/develop' into feature-create-and-edit-repo-file

Conflicts:
	modules/bindata/bindata.go
pull/3287/head
Richard Mahn 9 years ago
parent
commit
34a3498202
  1. 49
      .gopmfile
  2. 2
      README.md
  3. 4
      cmd/cert.go
  4. 30
      conf/locale/locale_de-DE.ini
  5. 3
      conf/locale/locale_en-US.ini
  6. 22
      conf/locale/locale_es-ES.ini
  7. 16
      conf/locale/locale_fr-FR.ini
  8. 82
      conf/locale/locale_ja-JP.ini
  9. 30
      conf/locale/locale_pt-BR.ini
  10. 28
      conf/locale/locale_ru-RU.ini
  11. 34
      conf/locale/locale_zh-TW.ini
  12. 4
      glide.lock
  13. 2
      gogs.go
  14. 42
      models/issue.go
  15. 4
      models/migrations/migrations.go
  16. 179
      models/user.go
  17. 198
      models/user_mail.go
  18. 57
      models/webhook.go
  19. 1
      modules/auth/admin.go
  20. 2
      modules/auth/repo_form.go
  21. 1121
      modules/bindata/bindata.go
  22. 9
      modules/context/auth.go
  23. 2
      modules/template/template.go
  24. 226
      public/assets/octicons-3.5.0/octicons.css
  25. BIN
      public/assets/octicons-3.5.0/octicons.eot
  26. 188
      public/assets/octicons-3.5.0/octicons.svg
  27. BIN
      public/assets/octicons-3.5.0/octicons.ttf
  28. BIN
      public/assets/octicons-3.5.0/octicons.woff
  29. BIN
      public/assets/octicons-4.3.0/octicons.eot
  30. 1
      public/assets/octicons-4.3.0/octicons.min.css
  31. 429
      public/assets/octicons-4.3.0/octicons.svg
  32. BIN
      public/assets/octicons-4.3.0/octicons.ttf
  33. BIN
      public/assets/octicons-4.3.0/octicons.woff
  34. BIN
      public/assets/octicons-4.3.0/octicons.woff2
  35. 40
      public/css/gogs.css
  36. 16
      public/less/_base.less
  37. 14
      public/less/_dashboard.less
  38. 2
      public/less/_explore.less
  39. 12
      public/less/_repository.less
  40. 1
      routers/admin/users.go
  41. 7
      routers/api/v1/api.go
  42. 9
      routers/api/v1/repo/hook.go
  43. 18
      routers/org/setting.go
  44. 4
      routers/repo/issue.go
  45. 9
      routers/repo/setting.go
  46. 4
      routers/repo/webhook.go
  47. 2
      templates/.VERSION
  48. 6
      templates/admin/user/edit.tmpl
  49. 20
      templates/base/head.tmpl
  50. 6
      templates/explore/repo_list.tmpl
  51. 10
      templates/org/home.tmpl
  52. 2
      templates/org/team/repositories.tmpl
  53. 2
      templates/repo/branch_dropdown.tmpl
  54. 18
      templates/repo/header.tmpl
  55. 4
      templates/repo/home.tmpl
  56. 2
      templates/repo/issue/list.tmpl
  57. 4
      templates/repo/release/list.tmpl
  58. 6
      templates/repo/user_cards.tmpl
  59. 6
      templates/repo/view_list.tmpl
  60. 2
      templates/repo/wiki/pages.tmpl
  61. 16
      templates/user/auth/prohibit_login.tmpl
  62. 16
      templates/user/dashboard/dashboard.tmpl
  63. 2
      templates/user/dashboard/navbar.tmpl
  64. 16
      templates/user/profile.tmpl

49
.gopmfile

@ -3,53 +3,54 @@ path = github.com/gogits/gogs
[deps] [deps]
github.com/bradfitz/gomemcache = commit:fb1f79c github.com/bradfitz/gomemcache = commit:fb1f79c
github.com/codegangsta/cli = commit:aca5b04 github.com/codegangsta/cli = commit:1efa31f
github.com/go-macaron/binding = commit:a68f342 github.com/go-macaron/binding = commit:9440f33
github.com/go-macaron/cache = commit:5617353 github.com/go-macaron/cache = commit:5617353
github.com/go-macaron/captcha = commit:8aa5919 github.com/go-macaron/captcha = commit:8aa5919
github.com/go-macaron/csrf = commit:6a9a7df github.com/go-macaron/csrf = commit:6a9a7df
github.com/go-macaron/gzip = commit:cad1c65 github.com/go-macaron/gzip = commit:cad1c65
github.com/go-macaron/i18n = commit:d2d3329 github.com/go-macaron/i18n = commit:ef57533
github.com/go-macaron/inject = commit:c5ab7bf github.com/go-macaron/inject = commit:c5ab7bf
github.com/go-macaron/session = commit:66031fc github.com/go-macaron/session = commit:66031fc
github.com/go-macaron/toolbox = commit:82b5115 github.com/go-macaron/toolbox = commit:82b5115
github.com/go-sql-driver/mysql = commit:66312f7 github.com/go-sql-driver/mysql = commit:3654d25
github.com/go-xorm/core = commit:5021584 github.com/go-xorm/core = commit:bc1b7f8
github.com/go-xorm/xorm = commit:769f6b3 github.com/go-xorm/xorm = commit:b8b1711
github.com/gogits/chardet = commit:2404f77 github.com/gogits/chardet = commit:2404f77
github.com/gogits/cron = commit:3abc0f8 github.com/gogits/cron = commit:96040e4
github.com/gogits/git-module = commit:76e8cce github.com/gogits/git-module = commit:db93fa5
github.com/gogits/go-gogs-client = commit:1da1834 github.com/gogits/go-gogs-client = commit:ee68cd9
github.com/issue9/identicon = commit:f8c0d2c github.com/issue9/identicon = commit:d36b545
github.com/jaytaylor/html2text = commit:52d9b78
github.com/kardianos/minwinsvc = commit:cad6b2b github.com/kardianos/minwinsvc = commit:cad6b2b
github.com/klauspost/compress = commit:006acde github.com/klauspost/compress = commit:14eb9c4
github.com/klauspost/cpuid = commit:09cded8 github.com/klauspost/cpuid = commit:09cded8
github.com/klauspost/crc32 = commit:19b0b33 github.com/klauspost/crc32 = commit:19b0b33
github.com/lib/pq = commit:165a352 github.com/lib/pq = commit:ee1442b
github.com/mattn/go-sqlite3 = commit:76e335f github.com/mattn/go-sqlite3 = commit:38ee283
github.com/mcuadros/go-version = commit:d52711f github.com/mcuadros/go-version = commit:d52711f
github.com/microcosm-cc/bluemonday = commit:4ac6f27 github.com/microcosm-cc/bluemonday = commit:4ac6f27
github.com/msteinert/pam = commit:02ccfbf github.com/msteinert/pam = commit:02ccfbf
github.com/nfnt/resize = commit:4d93a29 github.com/nfnt/resize = commit:4d93a29
github.com/russross/blackfriday = commit:b43df97 github.com/russross/blackfriday = commit:4e6f303
github.com/satori/go.uuid = commit:e673fdd github.com/satori/go.uuid = commit:879c588
github.com/sergi/go-diff = commit:ec7fdbb github.com/sergi/go-diff = commit:ec7fdbb
github.com/shurcooL/sanitized_anchor_name = commit:10ef21a github.com/shurcooL/sanitized_anchor_name = commit:10ef21a
github.com/Unknwon/cae = commit:7f5e046 github.com/Unknwon/cae = commit:7f5e046
github.com/Unknwon/com = commit:28b053d github.com/Unknwon/com = commit:28b053d
github.com/Unknwon/i18n = commit:3b48b66 github.com/Unknwon/i18n = commit:39d6f27
github.com/Unknwon/paginater = commit:7748a72 github.com/Unknwon/paginater = commit:7748a72
golang.org/x/crypto = commit:c197bcf golang.org/x/crypto = commit:77f4136
golang.org/x/net = commit:35b06af golang.org/x/net = commit:3f122ce
golang.org/x/sys = commit:9d4e42a golang.org/x/sys = commit:7f918dd
golang.org/x/text = commit:1b466db golang.org/x/text = commit:e477511
gopkg.in/alexcesaro/quotedprintable.v3 = commit:2caba25 gopkg.in/alexcesaro/quotedprintable.v3 = commit:2caba25
gopkg.in/asn1-ber.v1 = commit:4e86f43 gopkg.in/asn1-ber.v1 = commit:4e86f43
gopkg.in/bufio.v1 = commit:567b2bf gopkg.in/bufio.v1 = commit:567b2bf
gopkg.in/gomail.v2 = commit:060a5f4 gopkg.in/gomail.v2 = commit:81ebce5
gopkg.in/ini.v1 = commit:776aa73 gopkg.in/ini.v1 = commit:72ba3e6
gopkg.in/ldap.v2 = commit:07a7330 gopkg.in/ldap.v2 = commit:0e7db8e
gopkg.in/macaron.v1 = commit:94a5ef7 gopkg.in/macaron.v1 = commit:2133042
gopkg.in/redis.v2 = commit:e617904 gopkg.in/redis.v2 = commit:e617904
[res] [res]

2
README.md

@ -3,7 +3,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra
![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true) ![](https://github.com/gogits/gogs/blob/master/public/img/gogs-large-resize.png?raw=true)
##### Current tip version: 0.9.44 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions) ##### Current tip version: 0.9.46 (see [Releases](https://github.com/gogits/gogs/releases) for binary versions)
| Web | UI | Preview | | Web | UI | Preview |
|:-------------:|:-------:|:-------:| |:-------------:|:-------:|:-------:|

4
cmd/cert.go

@ -59,7 +59,7 @@ func pemBlockForKey(priv interface{}) *pem.Block {
case *ecdsa.PrivateKey: case *ecdsa.PrivateKey:
b, err := x509.MarshalECPrivateKey(k) b, err := x509.MarshalECPrivateKey(k)
if err != nil { if err != nil {
log.Fatal("unable to marshal ECDSA private key: %v", err) log.Fatalf("Unable to marshal ECDSA private key: %v\n", err)
} }
return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b} return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}
default: default:
@ -153,7 +153,7 @@ func runCert(ctx *cli.Context) error {
keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
if err != nil { if err != nil {
log.Fatal("failed to open key.pem for writing: %v", err) log.Fatalf("Failed to open key.pem for writing: %v\n", err)
} }
pem.Encode(keyOut, pemBlockForKey(priv)) pem.Encode(keyOut, pemBlockForKey(priv))
keyOut.Close() keyOut.Close()

30
conf/locale/locale_de-DE.ini

@ -157,7 +157,7 @@ reset_password=Passwort zurücksetzen
invalid_code=Es tut uns leid, der Bestätigungscode ist abgelaufen oder ungültig. invalid_code=Es tut uns leid, der Bestätigungscode ist abgelaufen oder ungültig.
reset_password_helper=Hier klicken, um das Passwort zurückzusetzen reset_password_helper=Hier klicken, um das Passwort zurückzusetzen
password_too_short=Das Passwort muss mindenstens 6 Zeichen lang sein. password_too_short=Das Passwort muss mindenstens 6 Zeichen lang sein.
non_local_account=Non-local accounts cannot change passwords through Gogs. non_local_account=Nicht-lokale Konten können Passwörter nicht via Gogs ändern.
[mail] [mail]
activate_account=Bitte aktivieren Sie Ihr Konto activate_account=Bitte aktivieren Sie Ihr Konto
@ -220,7 +220,7 @@ org_still_own_repo=Diese Organisation besitzt noch Repositories. Diese müssen z
target_branch_not_exist=Ziel-Branch existiert nicht target_branch_not_exist=Ziel-Branch existiert nicht
[user] [user]
change_avatar=Change your avatar change_avatar=Ändern Sie ihr Profilbild
join_on=Beigetreten am join_on=Beigetreten am
repositories=Repositories repositories=Repositories
activity=Öffentliche Aktivität activity=Öffentliche Aktivität
@ -350,8 +350,8 @@ readme_helper=Readme Vorlage auswählen
auto_init=Repository mit ausgewählten Dateien und Vorlagen initialisieren auto_init=Repository mit ausgewählten Dateien und Vorlagen initialisieren
create_repo=Repository erstellen create_repo=Repository erstellen
default_branch=Standard-Branch default_branch=Standard-Branch
mirror_prune=Prune mirror_prune=Entfernen
mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote mirror_prune_desc=Entferne alle Verweise auf nicht mehr existierende entfernte Repositories
mirror_interval=Mirror-Intervall (in Stunden) mirror_interval=Mirror-Intervall (in Stunden)
mirror_address=Mirror-Adresse mirror_address=Mirror-Adresse
mirror_address_desc=Bitte die nötigen Zugangsdaten in die Adresse mit aufnehmen. mirror_address_desc=Bitte die nötigen Zugangsdaten in die Adresse mit aufnehmen.
@ -563,10 +563,10 @@ wiki.last_updated=Zuletzt aktualisiert %s
settings=Einstellungen settings=Einstellungen
settings.options=Optionen settings.options=Optionen
settings.collaboration=Zusammenarbeit settings.collaboration=Zusammenarbeit
settings.collaboration.admin=Admin settings.collaboration.admin=Adminrechte
settings.collaboration.write=Write settings.collaboration.write=Schreibrechte
settings.collaboration.read=Read settings.collaboration.read=Leserechte
settings.collaboration.undefined=Undefined settings.collaboration.undefined=Nicht definiert
settings.hooks=Webhooks settings.hooks=Webhooks
settings.githooks=Git-Hooks settings.githooks=Git-Hooks
settings.basic_settings=Grundeinstellungen settings.basic_settings=Grundeinstellungen
@ -581,9 +581,9 @@ settings.external_wiki_url_desc=Besucher werden auf diese URL umgeleitet, wenn s
settings.issues_desc=Eingebautes einfaches Issue-System verwenden settings.issues_desc=Eingebautes einfaches Issue-System verwenden
settings.use_external_issue_tracker=Externes Issue-System verwenden settings.use_external_issue_tracker=Externes Issue-System verwenden
settings.tracker_url_format=URL-Format des externen Issue-Systems settings.tracker_url_format=URL-Format des externen Issue-Systems
settings.tracker_issue_style=External Issue Tracker Naming Style: settings.tracker_issue_style=Namenskonvention des externen Issue-Trackers:
settings.tracker_issue_style.numeric=Numeric <span class="ui light grey text">(1234)</span> settings.tracker_issue_style.numeric=Numerisch <span class="ui light grey text">(1234)</span>
settings.tracker_issue_style.alphanumeric=Alphanumeric <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span> settings.tracker_issue_style.alphanumeric=Alphanumerisch <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span>
settings.tracker_url_format_desc=Sie können die Platzhalter <code>{user} {repo} {index}</code> für den Benutzernamen, den Namen des Repositories und die Issue-Nummer verwenden. settings.tracker_url_format_desc=Sie können die Platzhalter <code>{user} {repo} {index}</code> für den Benutzernamen, den Namen des Repositories und die Issue-Nummer verwenden.
settings.pulls_desc=Pull-Requests aktivieren, um öffentliche Mitwirkung zu ermöglichen settings.pulls_desc=Pull-Requests aktivieren, um öffentliche Mitwirkung zu ermöglichen
settings.danger_zone=Gefahrenzone settings.danger_zone=Gefahrenzone
@ -606,7 +606,7 @@ settings.delete=Dieses Repository löschen
settings.delete_desc=Wenn dieses Repository gelöscht wurde, gibt es keinen Weg zurück. Bitte seien Sie vorsichtig. settings.delete_desc=Wenn dieses Repository gelöscht wurde, gibt es keinen Weg zurück. Bitte seien Sie vorsichtig.
settings.delete_notices_1=- Diese Operation kann <strong>NICHT</strong> rückgängig gemacht werden. settings.delete_notices_1=- Diese Operation kann <strong>NICHT</strong> rückgängig gemacht werden.
settings.delete_notices_2=- Die Operation wird alles, was mit diesem Git-Repository verbunden ist, dauerhaft löschen, inklusive der Daten, Issues, Kommentare und Zugriffsrechte von Mitarbeitern. settings.delete_notices_2=- Die Operation wird alles, was mit diesem Git-Repository verbunden ist, dauerhaft löschen, inklusive der Daten, Issues, Kommentare und Zugriffsrechte von Mitarbeitern.
settings.delete_notices_fork_1=- All forks will become independent after deletion. settings.delete_notices_fork_1=- Nach dem Löschen werden alle Forks unabhängig.
settings.deletion_success=Repository wurde erfolgreich gelöscht! settings.deletion_success=Repository wurde erfolgreich gelöscht!
settings.update_settings_success=Repository-Optionen aktualisiert. settings.update_settings_success=Repository-Optionen aktualisiert.
settings.transfer_owner=Neuer Besitzer settings.transfer_owner=Neuer Besitzer
@ -690,8 +690,8 @@ diff.show_unified_view=Gesamtansicht
diff.stats_desc=<strong> %d geänderte Dateien</strong> mit <strong>%d neuen</strong> und <strong>%d gelöschten</strong> Zeilen diff.stats_desc=<strong> %d geänderte Dateien</strong> mit <strong>%d neuen</strong> und <strong>%d gelöschten</strong> Zeilen
diff.bin=BIN diff.bin=BIN
diff.view_file=Datei anzeigen diff.view_file=Datei anzeigen
diff.file_supressed=File diff supressed because it is too large diff.file_supressed=Datei-Diff unterdrückt, da es zu groß ist
diff.too_many_files=Some files were not shown because too many files changed in this diff diff.too_many_files=Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.
release.releases=Releases release.releases=Releases
release.new_release=Neues Release release.new_release=Neues Release
@ -919,7 +919,7 @@ auths.enabled=Aktiviert
auths.updated=Aktualisiert auths.updated=Aktualisiert
auths.auth_type=Authentifizierungstyp auths.auth_type=Authentifizierungstyp
auths.auth_name=Authentifizierungsname auths.auth_name=Authentifizierungsname
auths.security_protocol=Security Protocol auths.security_protocol=Sicherheitsprotokoll
auths.domain=Domain auths.domain=Domain
auths.host=Host auths.host=Host
auths.port=Port auths.port=Port

3
conf/locale/locale_en-US.ini

@ -148,6 +148,8 @@ forget_password = Forgot password?
sign_up_now = Need an account? Sign up now. sign_up_now = Need an account? Sign up now.
confirmation_mail_sent_prompt = A new confirmation email has been sent to <b>%s</b>, please check your inbox within the next %d hours to complete the registration process. confirmation_mail_sent_prompt = A new confirmation email has been sent to <b>%s</b>, please check your inbox within the next %d hours to complete the registration process.
active_your_account = Activate Your Account active_your_account = Activate Your Account
prohibit_login = Login Prohibited
prohibit_login_desc = Your account is prohibited to login, please contact site admin.
resent_limit_prompt = Sorry, you already requested an activation email recently. Please wait 3 minutes then try again. resent_limit_prompt = Sorry, you already requested an activation email recently. Please wait 3 minutes then try again.
has_unconfirmed_mail = Hi %s, you have an unconfirmed email address (<b>%s</b>). If you haven't received a confirmation email or need to resend a new one, please click on the button below. has_unconfirmed_mail = Hi %s, you have an unconfirmed email address (<b>%s</b>). If you haven't received a confirmation email or need to resend a new one, please click on the button below.
resend_mail = Click here to resend your activation email resend_mail = Click here to resend your activation email
@ -890,6 +892,7 @@ users.edit_account = Edit Account
users.max_repo_creation = Maximum Repository Creation Limit users.max_repo_creation = Maximum Repository Creation Limit
users.max_repo_creation_desc = (Set -1 to use global default limit) users.max_repo_creation_desc = (Set -1 to use global default limit)
users.is_activated = This account is activated users.is_activated = This account is activated
users.prohibit_login = This account is prohibited to login
users.is_admin = This account has administrator permissions users.is_admin = This account has administrator permissions
users.allow_git_hook = This account has permissions to create Git hooks users.allow_git_hook = This account has permissions to create Git hooks
users.allow_import_local = This account has permissions to import local repositories users.allow_import_local = This account has permissions to import local repositories

22
conf/locale/locale_es-ES.ini

@ -157,7 +157,7 @@ reset_password=Restablecer su contraseña
invalid_code=Lo sentimos, su código de confirmación ha expirado o no es valido. invalid_code=Lo sentimos, su código de confirmación ha expirado o no es valido.
reset_password_helper=Haga Clic aquí para restablecer su contraseña reset_password_helper=Haga Clic aquí para restablecer su contraseña
password_too_short=La longitud de la contraseña no puede ser menor a 6. password_too_short=La longitud de la contraseña no puede ser menor a 6.
non_local_account=Non-local accounts cannot change passwords through Gogs. non_local_account=Cuentas que no son locales no pueden cambiar las contraseñas a través de Gogs.
[mail] [mail]
activate_account=Por favor, active su cuenta activate_account=Por favor, active su cuenta
@ -563,10 +563,10 @@ wiki.last_updated=Última actualización %s
settings=Configuración settings=Configuración
settings.options=Opciones settings.options=Opciones
settings.collaboration=Colaboración settings.collaboration=Colaboración
settings.collaboration.admin=Admin settings.collaboration.admin=Administrador
settings.collaboration.write=Write settings.collaboration.write=Escritura
settings.collaboration.read=Read settings.collaboration.read=Lectura
settings.collaboration.undefined=Undefined settings.collaboration.undefined=Indefinido
settings.hooks=Webhooks settings.hooks=Webhooks
settings.githooks=Git Hooks settings.githooks=Git Hooks
settings.basic_settings=Configuración Básica settings.basic_settings=Configuración Básica
@ -581,9 +581,9 @@ settings.external_wiki_url_desc=Los visitantes serán redireccionados a la URL c
settings.issues_desc=Habilitar tracker ligero de incidencias settings.issues_desc=Habilitar tracker ligero de incidencias
settings.use_external_issue_tracker=Usar tracker externo de incidencias settings.use_external_issue_tracker=Usar tracker externo de incidencias
settings.tracker_url_format=Formato URL del tracker de incidencias externo settings.tracker_url_format=Formato URL del tracker de incidencias externo
settings.tracker_issue_style=External Issue Tracker Naming Style: settings.tracker_issue_style=Estilo de etiquetado del tracker externo de incidencias:
settings.tracker_issue_style.numeric=Numeric <span class="ui light grey text">(1234)</span> settings.tracker_issue_style.numeric=Numérico <span class="ui light grey text">(1234)</span>
settings.tracker_issue_style.alphanumeric=Alphanumeric <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span> settings.tracker_issue_style.alphanumeric=Alfanumérico <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span>
settings.tracker_url_format_desc=Puedes usar las plantillas <code>{user} {repo} {index}</code> para el nombre de usuario, nombre del repositorio e índice de la incidencia. settings.tracker_url_format_desc=Puedes usar las plantillas <code>{user} {repo} {index}</code> para el nombre de usuario, nombre del repositorio e índice de la incidencia.
settings.pulls_desc=Habilitar Pull Requests para aceptar contribuciones públicas settings.pulls_desc=Habilitar Pull Requests para aceptar contribuciones públicas
settings.danger_zone=Zona de Peligro settings.danger_zone=Zona de Peligro
@ -606,7 +606,7 @@ settings.delete=Eliminar este repositorio
settings.delete_desc=Una vez has eliminado un repositorio, no hay vuelta atrás. Por favor, asegúrate de que es lo que quieres. settings.delete_desc=Una vez has eliminado un repositorio, no hay vuelta atrás. Por favor, asegúrate de que es lo que quieres.
settings.delete_notices_1=- Esta operación <strong>NO PUEDE</strong> revertirse. settings.delete_notices_1=- Esta operación <strong>NO PUEDE</strong> revertirse.
settings.delete_notices_2=- Esta operación eliminará de manera permanente todo el contenido de este repositorio, incluyendo los datos de git, las incidencias, los comentarios y los permisos de acceso de los colaboradores. settings.delete_notices_2=- Esta operación eliminará de manera permanente todo el contenido de este repositorio, incluyendo los datos de git, las incidencias, los comentarios y los permisos de acceso de los colaboradores.
settings.delete_notices_fork_1=- All forks will become independent after deletion. settings.delete_notices_fork_1=- Todos los forks se convertirán en independientes tras el borrado.
settings.deletion_success=¡El respositorio ha sido eliminado satisfactoriamente! settings.deletion_success=¡El respositorio ha sido eliminado satisfactoriamente!
settings.update_settings_success=Las opciones del repositorio se han actualizado correctamente. settings.update_settings_success=Las opciones del repositorio se han actualizado correctamente.
settings.transfer_owner=Nuevo Propietario settings.transfer_owner=Nuevo Propietario
@ -690,7 +690,7 @@ diff.show_unified_view=Unificar vista
diff.stats_desc=Se han <strong>modificado %d ficheros</strong> con <strong>%d adiciones</strong> y <strong>%d borrados</strong> diff.stats_desc=Se han <strong>modificado %d ficheros</strong> con <strong>%d adiciones</strong> y <strong>%d borrados</strong>
diff.bin=BIN diff.bin=BIN
diff.view_file=Ver fichero diff.view_file=Ver fichero
diff.file_supressed=File diff supressed because it is too large diff.file_supressed=El diff del archivo ha sido suprimido porque es demasiado grande
diff.too_many_files=Some files were not shown because too many files changed in this diff diff.too_many_files=Some files were not shown because too many files changed in this diff
release.releases=Releases release.releases=Releases
@ -919,7 +919,7 @@ auths.enabled=Activo
auths.updated=Actualizado auths.updated=Actualizado
auths.auth_type=Tipo de autenticación auths.auth_type=Tipo de autenticación
auths.auth_name=Nombre de autenticación auths.auth_name=Nombre de autenticación
auths.security_protocol=Security Protocol auths.security_protocol=Protocolo de seguridad
auths.domain=Dominio auths.domain=Dominio
auths.host=Host auths.host=Host
auths.port=Puerto auths.port=Puerto

16
conf/locale/locale_fr-FR.ini

@ -157,7 +157,7 @@ reset_password=Réinitialiser le mot de passe
invalid_code=Désolé, votre code de confirmation est invalide ou a expiré. invalid_code=Désolé, votre code de confirmation est invalide ou a expiré.
reset_password_helper=Cliquez ici pour réinitialiser votre mot de passe reset_password_helper=Cliquez ici pour réinitialiser votre mot de passe
password_too_short=Le mot de passe doit contenir 6 caractères minimum. password_too_short=Le mot de passe doit contenir 6 caractères minimum.
non_local_account=Non-local accounts cannot change passwords through Gogs. non_local_account=Les comptes non-locaux ne peuvent pas changer leur mot de passe via Gogs.
[mail] [mail]
activate_account=Veuillez activer votre compte activate_account=Veuillez activer votre compte
@ -220,7 +220,7 @@ org_still_own_repo=Cette organisation est toujours propriétaire d'un ou plusieu
target_branch_not_exist=La branche cible n'existe pas. target_branch_not_exist=La branche cible n'existe pas.
[user] [user]
change_avatar=Change your avatar change_avatar=Changer votre avatar
join_on=Inscrit le join_on=Inscrit le
repositories=Dépôts repositories=Dépôts
activity=Activité publique activity=Activité publique
@ -350,7 +350,7 @@ readme_helper=Sélectionnez un modèle de readme
auto_init=Initialiser ce dépôt avec le modèle et les fichiers sélectionnés auto_init=Initialiser ce dépôt avec le modèle et les fichiers sélectionnés
create_repo=Créer un dépôt create_repo=Créer un dépôt
default_branch=Branche par défaut default_branch=Branche par défaut
mirror_prune=Prune mirror_prune=Purger
mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote
mirror_interval=Intervalle du miroir (heure) mirror_interval=Intervalle du miroir (heure)
mirror_address=Adresse du miroir mirror_address=Adresse du miroir
@ -563,10 +563,10 @@ wiki.last_updated=Dernière mise à jour: %s
settings=Paramètres settings=Paramètres
settings.options=Options settings.options=Options
settings.collaboration=Collaboration settings.collaboration=Collaboration
settings.collaboration.admin=Admin settings.collaboration.admin=Administrateur
settings.collaboration.write=Write settings.collaboration.write=Écrire
settings.collaboration.read=Read settings.collaboration.read=Lire
settings.collaboration.undefined=Undefined settings.collaboration.undefined=Indéfini
settings.hooks=Webhooks settings.hooks=Webhooks
settings.githooks=Git Hooks settings.githooks=Git Hooks
settings.basic_settings=Paramètres de base settings.basic_settings=Paramètres de base
@ -919,7 +919,7 @@ auths.enabled=Activé
auths.updated=Mis à jour auths.updated=Mis à jour
auths.auth_type=Type d'authentification auths.auth_type=Type d'authentification
auths.auth_name=Nom de l'authentification auths.auth_name=Nom de l'authentification
auths.security_protocol=Security Protocol auths.security_protocol=Protocole de sécurité
auths.domain=Domaine auths.domain=Domaine
auths.host=Hôte auths.host=Hôte
auths.port=Port auths.port=Port

82
conf/locale/locale_ja-JP.ini

@ -2,7 +2,7 @@ app_desc=Go言語で実装したセルフホストGitサービス
home=ホーム home=ホーム
dashboard=ダッシュボード dashboard=ダッシュボード
explore=クプローラ explore=エクプローラ
help=ヘルプ help=ヘルプ
sign_in=サインイン sign_in=サインイン
sign_out=サインアウト sign_out=サインアウト
@ -21,7 +21,7 @@ username=ユーザ名
email=E-mail email=E-mail
password=パスワード password=パスワード
re_type=再入力 re_type=再入力
captcha=キャプチャ captcha=CAPTCHA
repository=リポジトリ repository=リポジトリ
organization=組織 organization=組織
@ -35,8 +35,8 @@ manage_org=組織を管理
admin_panel=管理者パネル admin_panel=管理者パネル
account_settings=アカウント設定 account_settings=アカウント設定
settings=設定 settings=設定
your_profile=あなたのプロファイ your_profile=プロフィー
your_settings=あなたの設定 your_settings=設定
activities=アクティビティ activities=アクティビティ
pull_requests=プルリクエスト pull_requests=プルリクエスト
@ -72,9 +72,9 @@ repo_path_helper=すべての Git リモート リポジトリはこのディレ
run_user=実行ユーザ run_user=実行ユーザ
run_user_helper=ユーザーはリポジトリ ルートパスへのアクセス、及びGogs を実行する権限を所有する必要があります。 run_user_helper=ユーザーはリポジトリ ルートパスへのアクセス、及びGogs を実行する権限を所有する必要があります。
domain=ドメイン domain=ドメイン
domain_helper=これはSSHクローンURLに影響す domain_helper=これはSSHクローンURLに影響します。
ssh_port=SSH ポート ssh_port=SSH ポート
ssh_port_helper=あならのSSHサーバおポート番号、SSH機能を無効するにはここを空白のままにしてください ssh_port_helper=SSHサーバーを使用する場合はポート番号を入力してください。 空白にした場合は無効化されます
http_port=HTTP ポート http_port=HTTP ポート
http_port_helper=アプリケーションが待ち受けするポート番号。 http_port_helper=アプリケーションが待ち受けするポート番号。
app_url=アプリケーションの URL app_url=アプリケーションの URL
@ -83,7 +83,7 @@ log_root_path=ログのパス
log_root_path_helper=ログファイルを書き込むディレクトリ。 log_root_path_helper=ログファイルを書き込むディレクトリ。
optional_title=オプション設定 optional_title=オプション設定
email_title=E-mailサービス設定 email_title=メールサービス設定
smtp_host=SMTP ホスト smtp_host=SMTP ホスト
smtp_from=差出人 smtp_from=差出人
smtp_from_helper=送信者メールアドレス、RFC 5322。フォーマットはメールアドレスのみ、または"Name" <email@example.com>。 smtp_from_helper=送信者メールアドレス、RFC 5322。フォーマットはメールアドレスのみ、または"Name" <email@example.com>。
@ -123,10 +123,10 @@ invalid_log_root_path=ログのルートパスがむこうです: %v
uname_holder=ユーザー名またはEメール uname_holder=ユーザー名またはEメール
password_holder=パスワード password_holder=パスワード
switch_dashboard_context=ダッシュ ボードのコンテキストを切替 switch_dashboard_context=ダッシュ ボードのコンテキストを切替
my_repos=のリポジトリ my_repos=自分のリポジトリ
collaborative_repos=共同リポジトリ collaborative_repos=共同リポジトリ
my_orgs=の組織 my_orgs=自分の組織
my_mirrors=のミラー my_mirrors=自分のミラー
view_home=ビュー %s view_home=ビュー %s
issues.in_your_repos=あなたのリポジトリ issues.in_your_repos=あなたのリポジトリ
@ -138,16 +138,16 @@ search=検索
[auth] [auth]
create_new_account=新規アカウントを作成 create_new_account=新規アカウントを作成
register_hepler_msg=すでにアカウントをお持ちですか?今すぐログイン register_hepler_msg=既にアカウントをお持ちですか?今すぐログインしましょう
social_register_hepler_msg=すでにアカウントをお持ちですか?今すぐバインド social_register_hepler_msg=既にアカウントをお持ちですか?連携しましょう
disable_register_prompt=申し訳ありませんが、登録が無効になっています。サイト管理者に問い合わせてください。 disable_register_prompt=申し訳ありませんが、現在登録は受け付けておりません。サイトの管理者にお問い合わせください。
disable_register_mail=申し訳ありませんが、登録メールの確認機能が無効になっています。 disable_register_mail=申し訳ありませんが、登録メールの確認機能が無効になっています。
remember_me=ログイン状態を保持する remember_me=ログインしたままにする
forgot_password=パスワードを忘れた forgot_password=パスワードを忘れた
forget_password=パスワードを忘れた? forget_password=パスワードを忘れまし
sign_up_now=アカウントが必要ですか?今すぐサインアップ sign_up_now=アカウントが必要ですか?今すぐ登録しましょう!
confirmation_mail_sent_prompt=新しい確認メールを <b>%s</b> に送りました。登録を完了させるために、%d時間以内にあなたのメールボックスを確認してください。 confirmation_mail_sent_prompt=新しい確認メールを <b>%s</b> に送りました。登録を完了させるために、%d時間以内にあなたのメールボックスを確認してください。
active_your_account=アカウントをアクティブ active_your_account=アカウントを有効化
resent_limit_prompt=申し訳ありませんが、アクティベーションメールは頻繁に送信しています。3 分お待ちください。 resent_limit_prompt=申し訳ありませんが、アクティベーションメールは頻繁に送信しています。3 分お待ちください。
has_unconfirmed_mail=こんにちは %s さん、あなたの電子メール アドレス (<b>%s</b>) は未確認です。もし確認メールをまだ確認できていないか、改めて再送信する場合は、下のボタンをクリックしてください。 has_unconfirmed_mail=こんにちは %s さん、あなたの電子メール アドレス (<b>%s</b>) は未確認です。もし確認メールをまだ確認できていないか、改めて再送信する場合は、下のボタンをクリックしてください。
resend_mail=アクティベーションメールを再送信するにはここをクリック resend_mail=アクティベーションメールを再送信するにはここをクリック
@ -220,7 +220,7 @@ org_still_own_repo=この組織はまだリポジトリの所有しています
target_branch_not_exist=ターゲットブランチが存在しない target_branch_not_exist=ターゲットブランチが存在しない
[user] [user]
change_avatar=Change your avatar change_avatar=アバターを変更
join_on=参加しました join_on=参加しました
repositories=リポジトリ repositories=リポジトリ
activity=パブリック・アクティビティ activity=パブリック・アクティビティ
@ -310,7 +310,7 @@ social_desc=これは関連付けられたソーシャルアカウントのリ
unbind=バインド解除 unbind=バインド解除
unbind_success=SNSアカウントがバインドされていない。 unbind_success=SNSアカウントがバインドされていない。
manage_access_token=個人のアクセス トークンを管理 manage_access_token=パーソナルアクセス トークンを管理
generate_new_token=新しいトークンを生成 generate_new_token=新しいトークンを生成
tokens_desc=生成したトークンを利用して Gogs の API にアクセスすることができます。 tokens_desc=生成したトークンを利用して Gogs の API にアクセスすることができます。
new_token_desc=今のところ、全てのトークンはあなたのアカウントにフルアクセスできます。 new_token_desc=今のところ、全てのトークンはあなたのアカウントにフルアクセスできます。
@ -323,7 +323,7 @@ access_token_deletion_desc=パーソナルアクセストークンを削除す
delete_token_success=パーソナルアクセストークンは正常に削除されました!同時にあなたのアプリケーションを更新することを忘れないでください。 delete_token_success=パーソナルアクセストークンは正常に削除されました!同時にあなたのアプリケーションを更新することを忘れないでください。
delete_account=アカウントを削除 delete_account=アカウントを削除
delete_prompt=この操作はあなたのアカウントを完全に削除し、復旧<strong>できない</strong> ! delete_prompt=この操作をするとアカウントが完全に削除され、<strong>二度と元に戻すことができなくなります</strong> !
confirm_delete_account=削除の確認 confirm_delete_account=削除の確認
delete_account_title=アカウントの削除 delete_account_title=アカウントの削除
delete_account_desc=このアカウントは永久に削除しようとしている、継続しますか? delete_account_desc=このアカウントは永久に削除しようとしている、継続しますか?
@ -331,15 +331,15 @@ delete_account_desc=このアカウントは永久に削除しようとしてい
[repo] [repo]
owner=オーナー owner=オーナー
repo_name=リポジトリ名 repo_name=リポジトリ名
repo_name_helper=偉大なリポジトリ名は短い。思い出に残り、そして<strong>一意</strong>だ repo_name_helper=短くて分かりやすく<strong>重複しない</strong>リポジトリ名を決めてください
visibility=ビジビリティ visibility=公開/非公開
visiblity_helper=このリポジトリは<span class="ui red text">プライベート</span>です。 visiblity_helper=このリポジトリは<span class="ui red text">プライベート</span>です。
visiblity_helper_forced=サイト管理者は、強制的にすべての新しいリポジトリを<span class="ui red text"> プライベート</span> にしています。 visiblity_helper_forced=サイト管理者は、強制的にすべての新しいリポジトリを<span class="ui red text"> プライベート</span> にしています。
visiblity_fork_helper=(この値の変更はすべてのフォークに適用されます) visiblity_fork_helper=(この値の変更はすべてのフォークに適用されます)
clone_helper=クローニングのヘルプが必要ですか?<a target="_blank"href="%s"> ヘルプ</a> を参照してください! clone_helper=クローンに関してお困りであれば<a target="_blank"href="%s"> ヘルプ</a> を参照しましょう。
fork_repo=フォークのリポジトリ fork_repo=リポジトリをフォーク
fork_from=フォーク元 fork_from=フォーク元
fork_visiblity_helper=フォークされたリポジトリは可視状態を変更できません fork_visiblity_helper=フォークされたリポジトリの可視状態は変更できません。
repo_desc=説明 repo_desc=説明
repo_lang=言語 repo_lang=言語
repo_lang_helper=.gitignoreファイルを選択 repo_lang_helper=.gitignoreファイルを選択
@ -360,8 +360,8 @@ stargazers=Stargazers
forks=フォーク forks=フォーク
form.reach_limit_of_creation=The owner has reached maximum creation limit of %d repositories. form.reach_limit_of_creation=The owner has reached maximum creation limit of %d repositories.
form.name_reserved=リポジトリ名 '%s' は予約されています。 form.name_reserved=リポジトリ名 '%s' は使用されています。
form.name_pattern_not_allowed=リポジトリ名のパターン '%s' は許可されていません。 form.name_pattern_not_allowed=リポジトリ名に '%s' は使用できません。
need_auth=認証が必要 need_auth=認証が必要
migrate_type=マイグレーションの種類 migrate_type=マイグレーションの種類
@ -405,9 +405,9 @@ labels=ラベル
milestones=マイルストーン milestones=マイルストーン
commits=コミット commits=コミット
releases=リリース releases=リリース
file_raw=生データ file_raw=Raw
file_history=履歴 file_history=履歴
file_view_raw=データを見る file_view_raw=Rawデータを見る
file_permalink=パーマリンク file_permalink=パーマリンク
commits.commits=コミット commits.commits=コミット
@ -445,8 +445,8 @@ issues.filter_assignee=アサインされた人
issues.filter_assginee_no_select=選択可能な担当者がいない issues.filter_assginee_no_select=選択可能な担当者がいない
issues.filter_type=タイプ issues.filter_type=タイプ
issues.filter_type.all_issues=すべての問題 issues.filter_type.all_issues=すべての問題
issues.filter_type.assigned_to_you=あなたに割り当てられました。 issues.filter_type.assigned_to_you=担当中のリポジトリ
issues.filter_type.created_by_you=あなたが作成しました。 issues.filter_type.created_by_you=作成したリポジトリ
issues.filter_type.mentioning_you=あなたに伝える issues.filter_type.mentioning_you=あなたに伝える
issues.filter_sort=並べ替え issues.filter_sort=並べ替え
issues.filter_sort.latest=最新 issues.filter_sort.latest=最新
@ -465,7 +465,7 @@ issues.num_comments=%d コメント
issues.commented_at=`コメント <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.commented_at=`コメント <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.no_content=まだコンテンツがありません issues.no_content=まだコンテンツがありません
issues.close_issue=閉じる issues.close_issue=閉じる
issues.close_comment_issue=コメントと閉じる issues.close_comment_issue=コメントしてクローズ
issues.reopen_issue=Reopen issues.reopen_issue=Reopen
issues.reopen_comment_issue=コメントと再開 issues.reopen_comment_issue=コメントと再開
issues.create_comment=コメント  issues.create_comment=コメント 
@ -612,7 +612,7 @@ settings.update_settings_success=リポジトリ オプションが更新され
settings.transfer_owner=新しいオーナー settings.transfer_owner=新しいオーナー
settings.make_transfer=転送 settings.make_transfer=転送
settings.transfer_succeed=リポジトリの所有権は正常に転送されました。 settings.transfer_succeed=リポジトリの所有権は正常に転送されました。
settings.confirm_delete=削除確認 settings.confirm_delete=削除確認
settings.add_collaborator=新しい共同編集者を追加 settings.add_collaborator=新しい共同編集者を追加
settings.add_collaborator_success=新しい共同編集者が追加されました。 settings.add_collaborator_success=新しい共同編集者が追加されました。
settings.delete_collaborator=Delete settings.delete_collaborator=Delete
@ -729,7 +729,7 @@ org_name_holder=組織名
org_full_name_holder=組織のフルネーム org_full_name_holder=組織のフルネーム
org_name_helper=偉大な組織の名は短く覚えやすいです。 org_name_helper=偉大な組織の名は短く覚えやすいです。
create_org=組織を作成 create_org=組織を作成
repo_updated=更新した repo_updated=最終更新
people=人々 people=人々
invite_someone=誰かを招待 invite_someone=誰かを招待
teams=チーム teams=チーム
@ -757,8 +757,8 @@ settings.change_orgname_prompt=This change will affect how links relate to the o
settings.update_avatar_success=組織のアバター画像が正常に更新されました。 settings.update_avatar_success=組織のアバター画像が正常に更新されました。
settings.delete=組織を削除 settings.delete=組織を削除
settings.delete_account=この組織を削除 settings.delete_account=この組織を削除
settings.delete_prompt=操作はこの組織を完全に削除し、復旧<strong>できない</strong> settings.delete_prompt=この操作をすると組織が完全に削除され、<strong>二度と元に戻すことができなくなります</strong>
settings.confirm_delete_account=削除確認 settings.confirm_delete_account=削除確認
settings.delete_org_title=組織の削除 settings.delete_org_title=組織の削除
settings.delete_org_desc=この組織は完全に削除されます、継続しますか? settings.delete_org_desc=この組織は完全に削除されます、継続しますか?
settings.hooks_desc=この組織のもとで <strong>すべてのリポジトリ</strong> に対してトリガーされる webhook を追加します。 settings.hooks_desc=この組織のもとで <strong>すべてのリポジトリ</strong> に対してトリガーされる webhook を追加します。
@ -916,7 +916,7 @@ auths.new=新しいソースを追加
auths.name=名前 auths.name=名前
auths.type=タイプ auths.type=タイプ
auths.enabled=Enabled auths.enabled=Enabled
auths.updated=Updated auths.updated=更新しました
auths.auth_type=認証タイプ auths.auth_type=認証タイプ
auths.auth_name=認証名 auths.auth_name=認証名
auths.security_protocol=Security Protocol auths.security_protocol=Security Protocol
@ -1026,7 +1026,7 @@ config.cache_conn=キャッシュ接続
config.session_config=セッションの構成 config.session_config=セッションの構成
config.session_provider=セッション プロバイダー config.session_provider=セッション プロバイダー
config.provider_config=プロバイダーの構成 config.provider_config=プロバイダーの構成
config.cookie_name=クッキー名 config.cookie_name=クッキー
config.enable_set_cookie=クッキーの設定を有効にする config.enable_set_cookie=クッキーの設定を有効にする
config.gc_interval_time=GC 間隔 config.gc_interval_time=GC 間隔
config.session_life_time=セッションのライフタイム config.session_life_time=セッションのライフタイム
@ -1064,8 +1064,8 @@ notices.op=Op。
notices.delete_success=システム通知が正常に削除されました。 notices.delete_success=システム通知が正常に削除されました。
[action] [action]
create_repo=リポジトリ <a href="%s"> %s</a>を作成しました create_repo=リポジトリ <a href="%s"> %s</a> を作成しました
rename_repo=<code>%[1]s</code> から <a href="%[2]s">[3]s</a> にリポジトリ名を変更した rename_repo=<code>%[1]s</code> から <a href="%[2]s">[3]s</a> にリポジトリ名を変更しまし
commit_repo=<a href="%[1]s">%[4]s</a>を<a href="%[1]s/src/%[2]s">%[3]s</a>にプッシュしました commit_repo=<a href="%[1]s">%[4]s</a>を<a href="%[1]s/src/%[2]s">%[3]s</a>にプッシュしました
create_issue=`問題 <a href="%s/issues/%s">%s#%[2]s</a> を開きました` create_issue=`問題 <a href="%s/issues/%s">%s#%[2]s</a> を開きました`
close_issue=`closed issue <a href="%s/issues/%s">%s#%[2]s</a>` close_issue=`closed issue <a href="%s/issues/%s">%s#%[2]s</a>`
@ -1091,7 +1091,7 @@ now=今
1mon=1 ヶ月 %s 1mon=1 ヶ月 %s
1y=1 年間 %s 1y=1 年間 %s
seconds=%d 秒 %s seconds=%d 秒 %s
minutes=%d %s minutes=%d分%s
hours=%d 時間 %s hours=%d 時間 %s
days=%d 日 %s days=%d 日 %s
weeks=%d 週間 %s weeks=%d 週間 %s

30
conf/locale/locale_pt-BR.ini

@ -157,7 +157,7 @@ reset_password=Redefinir Sua Senha
invalid_code=Desculpe, seu código de confirmação expirou ou não é válido. invalid_code=Desculpe, seu código de confirmação expirou ou não é válido.
reset_password_helper=Clique aqui para redefinir sua senha reset_password_helper=Clique aqui para redefinir sua senha
password_too_short=O comprimento da senha não pode ser menor que 6. password_too_short=O comprimento da senha não pode ser menor que 6.
non_local_account=Non-local accounts cannot change passwords through Gogs. non_local_account=Não é possível mudar a senha de contas não-locais pelo Gogs.
[mail] [mail]
activate_account=Por favor, ative sua conta activate_account=Por favor, ative sua conta
@ -220,7 +220,7 @@ org_still_own_repo=Esta organização ainda tem a propriedade do repositório, v
target_branch_not_exist=O branch de destino não existe. target_branch_not_exist=O branch de destino não existe.
[user] [user]
change_avatar=Change your avatar change_avatar=Mude seu avatar
join_on=Inscreveu-se em join_on=Inscreveu-se em
repositories=Repositórios repositories=Repositórios
activity=Atividade Pública activity=Atividade Pública
@ -350,8 +350,8 @@ readme_helper=Selecione um modelo de leia-me
auto_init=Inicializar este repositório com os arquivos selecionados e modelo auto_init=Inicializar este repositório com os arquivos selecionados e modelo
create_repo=Criar Repositório create_repo=Criar Repositório
default_branch=Branch padrão default_branch=Branch padrão
mirror_prune=Prune mirror_prune=Varrer
mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote mirror_prune_desc=Remova quaisquer referências que não existem mais no remote
mirror_interval=Intervalo de Espelho (hora) mirror_interval=Intervalo de Espelho (hora)
mirror_address=Endereço do espelho mirror_address=Endereço do espelho
mirror_address_desc=Por favor, inclua as credenciais do usuário necessários no endereço. mirror_address_desc=Por favor, inclua as credenciais do usuário necessários no endereço.
@ -563,10 +563,10 @@ wiki.last_updated=Última atualização %s
settings=Configurações settings=Configurações
settings.options=Opções settings.options=Opções
settings.collaboration=Colaboração settings.collaboration=Colaboração
settings.collaboration.admin=Admin settings.collaboration.admin=Administrador
settings.collaboration.write=Write settings.collaboration.write=Escrita
settings.collaboration.read=Read settings.collaboration.read=Leitura
settings.collaboration.undefined=Undefined settings.collaboration.undefined=Indefinido
settings.hooks=Webhooks settings.hooks=Webhooks
settings.githooks=Hooks do Git settings.githooks=Hooks do Git
settings.basic_settings=Configurações Básicas settings.basic_settings=Configurações Básicas
@ -581,9 +581,9 @@ settings.external_wiki_url_desc=Os visitantes serão redirecionados para a URL q
settings.issues_desc=Habilitar gerenciamento de "problemas" nativo settings.issues_desc=Habilitar gerenciamento de "problemas" nativo
settings.use_external_issue_tracker=Usar issue tracker externo settings.use_external_issue_tracker=Usar issue tracker externo
settings.tracker_url_format=Formato de URL do issue tracker externo settings.tracker_url_format=Formato de URL do issue tracker externo
settings.tracker_issue_style=External Issue Tracker Naming Style: settings.tracker_issue_style=Estilo de nome de issue tracker externo:
settings.tracker_issue_style.numeric=Numeric <span class="ui light grey text">(1234)</span> settings.tracker_issue_style.numeric=Numérico <span class="ui light grey text">(1234)</span>
settings.tracker_issue_style.alphanumeric=Alphanumeric <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span> settings.tracker_issue_style.alphanumeric=Alfanumérico <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span>
settings.tracker_url_format_desc=Você pode usar o espaço reservado <code>{user} {repo} {index}</code> para o nome do usuário, índice de nome e a questão do repositório. settings.tracker_url_format_desc=Você pode usar o espaço reservado <code>{user} {repo} {index}</code> para o nome do usuário, índice de nome e a questão do repositório.
settings.pulls_desc=Habilitar pull requests para aceitar contribuições públicas settings.pulls_desc=Habilitar pull requests para aceitar contribuições públicas
settings.danger_zone=Zona de Perigo settings.danger_zone=Zona de Perigo
@ -606,7 +606,7 @@ settings.delete=Deletar Este Repositório
settings.delete_desc=Uma vez que você deleta um repositório, não tem volta. Por favor, tenha certeza. settings.delete_desc=Uma vez que você deleta um repositório, não tem volta. Por favor, tenha certeza.
settings.delete_notices_1=-Esta operação <strong>NÃO PODERÁ</strong> ser desfeita. settings.delete_notices_1=-Esta operação <strong>NÃO PODERÁ</strong> ser desfeita.
settings.delete_notices_2=- Esta operação irá apagar permanentemente o tudo deste repositório, incluindo os dados do Git, problemas, comentários e acessos dos colaboradores. settings.delete_notices_2=- Esta operação irá apagar permanentemente o tudo deste repositório, incluindo os dados do Git, problemas, comentários e acessos dos colaboradores.
settings.delete_notices_fork_1=- All forks will become independent after deletion. settings.delete_notices_fork_1=-Todos os forks se tornarão independentes após a exclusão.
settings.deletion_success=Repositório excluído com sucesso! settings.deletion_success=Repositório excluído com sucesso!
settings.update_settings_success=As opções do repositório foram atualizadas com sucesso. settings.update_settings_success=As opções do repositório foram atualizadas com sucesso.
settings.transfer_owner=Novo Dono settings.transfer_owner=Novo Dono
@ -690,8 +690,8 @@ diff.show_unified_view=Visão unificada
diff.stats_desc=<strong> %d arquivos alterados</strong> com <strong>%d adições</strong> e <strong>%d exclusões</strong> diff.stats_desc=<strong> %d arquivos alterados</strong> com <strong>%d adições</strong> e <strong>%d exclusões</strong>
diff.bin=BIN diff.bin=BIN
diff.view_file=Ver Arquivo diff.view_file=Ver Arquivo
diff.file_supressed=File diff supressed because it is too large diff.file_supressed=Diff do arquivo suprimido porque é muito extenso
diff.too_many_files=Some files were not shown because too many files changed in this diff diff.too_many_files=Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff
release.releases=Versões release.releases=Versões
release.new_release=Nova Versão release.new_release=Nova Versão
@ -919,7 +919,7 @@ auths.enabled=Habilitado
auths.updated=Atualizado auths.updated=Atualizado
auths.auth_type=Tipo de autenticação auths.auth_type=Tipo de autenticação
auths.auth_name=Nome da autenticação auths.auth_name=Nome da autenticação
auths.security_protocol=Security Protocol auths.security_protocol=Protocolo de segurança
auths.domain=Domínio auths.domain=Domínio
auths.host=Host auths.host=Host
auths.port=Porta auths.port=Porta

28
conf/locale/locale_ru-RU.ini

@ -157,7 +157,7 @@ reset_password=Сброс пароля
invalid_code=Извините, ваш код подтверждения истек или не является допустимым. invalid_code=Извините, ваш код подтверждения истек или не является допустимым.
reset_password_helper=Нажмите здесь, чтобы сбросить свой пароль reset_password_helper=Нажмите здесь, чтобы сбросить свой пароль
password_too_short=Длина пароля не менее 6 символов. password_too_short=Длина пароля не менее 6 символов.
non_local_account=Non-local accounts cannot change passwords through Gogs. non_local_account=Нелокальные аккаунты не могут изменить пароль через Gogs.
[mail] [mail]
activate_account=Пожалуйста активируйте свой аккаунт activate_account=Пожалуйста активируйте свой аккаунт
@ -220,7 +220,7 @@ org_still_own_repo=Данная организация все еще являе
target_branch_not_exist=Целевая ветка не существует target_branch_not_exist=Целевая ветка не существует
[user] [user]
change_avatar=Change your avatar change_avatar=Изменить аватар
join_on=Присоединился join_on=Присоединился
repositories=Репозитории repositories=Репозитории
activity=Активность activity=Активность
@ -350,7 +350,7 @@ readme_helper=Выберите шаблон для файла readme
auto_init=Инициализировать этот репозиторий выбранными файлами и шаблоном auto_init=Инициализировать этот репозиторий выбранными файлами и шаблоном
create_repo=Создать репозиторий create_repo=Создать репозиторий
default_branch=Ветка по умолчанию default_branch=Ветка по умолчанию
mirror_prune=Prune mirror_prune=Очистить
mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote
mirror_interval=Интервал зеркалирования (час) mirror_interval=Интервал зеркалирования (час)
mirror_address=Адрес зеркала mirror_address=Адрес зеркала
@ -563,10 +563,10 @@ wiki.last_updated=Последнее обновление %s
settings=Настройки settings=Настройки
settings.options=Опции settings.options=Опции
settings.collaboration=Сотрудничество settings.collaboration=Сотрудничество
settings.collaboration.admin=Admin settings.collaboration.admin=Администратор
settings.collaboration.write=Write settings.collaboration.write=Запись
settings.collaboration.read=Read settings.collaboration.read=Просмотр
settings.collaboration.undefined=Undefined settings.collaboration.undefined=Не определено
settings.hooks=Автоматическое обновление settings.hooks=Автоматическое обновление
settings.githooks=Git хуки settings.githooks=Git хуки
settings.basic_settings=Основные параметры settings.basic_settings=Основные параметры
@ -581,9 +581,9 @@ settings.external_wiki_url_desc=Посетители будут перенапр
settings.issues_desc=Включить встроенную, легковесную систему отслеживания ошибок settings.issues_desc=Включить встроенную, легковесную систему отслеживания ошибок
settings.use_external_issue_tracker=Использовать внешнюю систему отслеживания ошибок settings.use_external_issue_tracker=Использовать внешнюю систему отслеживания ошибок
settings.tracker_url_format=Внешний формат ссылки системы отслеживания ошибок. settings.tracker_url_format=Внешний формат ссылки системы отслеживания ошибок.
settings.tracker_issue_style=External Issue Tracker Naming Style: settings.tracker_issue_style=Стиль Именования Внешней Системы Учета Задач:
settings.tracker_issue_style.numeric=Numeric <span class="ui light grey text">(1234)</span> settings.tracker_issue_style.numeric=Числовой <span class="ui light grey text"> (1234)</span>
settings.tracker_issue_style.alphanumeric=Alphanumeric <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span> settings.tracker_issue_style.alphanumeric=Буквенно-цифровой <span class="ui light grey text"> (ABC-123, DEF-234,...)</span>
settings.tracker_url_format_desc=Вы можете использовать шаблон <code>{user} {repo} {index}</code> для имени пользователя, репозитория и номера задачи. settings.tracker_url_format_desc=Вы можете использовать шаблон <code>{user} {repo} {index}</code> для имени пользователя, репозитория и номера задачи.
settings.pulls_desc=Включить публичные запросы на слияние settings.pulls_desc=Включить публичные запросы на слияние
settings.danger_zone=Опасная зона settings.danger_zone=Опасная зона
@ -606,7 +606,7 @@ settings.delete=Удалить этот репозиторий
settings.delete_desc=Будьте внимательны! Как только вы удалите репозиторий — пути назад не будет. settings.delete_desc=Будьте внимательны! Как только вы удалите репозиторий — пути назад не будет.
settings.delete_notices_1=- Эта операция <strong>НЕ МОЖЕТ</strong> быть отменена. settings.delete_notices_1=- Эта операция <strong>НЕ МОЖЕТ</strong> быть отменена.
settings.delete_notices_2=- Эта операция навсегда удалит всё из этого репозитория, включая данные Git, связанные с ним задачи, комментарии и права доступа для сотрудников. settings.delete_notices_2=- Эта операция навсегда удалит всё из этого репозитория, включая данные Git, связанные с ним задачи, комментарии и права доступа для сотрудников.
settings.delete_notices_fork_1=- All forks will become independent after deletion. settings.delete_notices_fork_1=- Все отвлетвления станут независимыми после удаления.
settings.deletion_success=Репозиторий был успешно удалён! settings.deletion_success=Репозиторий был успешно удалён!
settings.update_settings_success=Настройка репозитория обновлена успешно. settings.update_settings_success=Настройка репозитория обновлена успешно.
settings.transfer_owner=Новый владелец settings.transfer_owner=Новый владелец
@ -690,8 +690,8 @@ diff.show_unified_view=Единый вид
diff.stats_desc=<strong> %d измененных файлов</strong> с <strong>%d добавлено</strong> и <strong>%d удалено</strong> diff.stats_desc=<strong> %d измененных файлов</strong> с <strong>%d добавлено</strong> и <strong>%d удалено</strong>
diff.bin=BIN diff.bin=BIN
diff.view_file=Просмотреть файл diff.view_file=Просмотреть файл
diff.file_supressed=File diff supressed because it is too large diff.file_supressed=Разница между файлами не показана из-за своего большого размера
diff.too_many_files=Some files were not shown because too many files changed in this diff diff.too_many_files=Некоторые файлы не были показать из-за большого количества измененных файлов
release.releases=Релизы release.releases=Релизы
release.new_release=Новый релиз release.new_release=Новый релиз
@ -919,7 +919,7 @@ auths.enabled=Включено
auths.updated=Обновлено auths.updated=Обновлено
auths.auth_type=Тип аутентификации auths.auth_type=Тип аутентификации
auths.auth_name=Имя аутентификации auths.auth_name=Имя аутентификации
auths.security_protocol=Security Protocol auths.security_protocol=Протокол безопасности
auths.domain=Домен auths.domain=Домен
auths.host=Хост auths.host=Хост
auths.port=Порт auths.port=Порт

34
conf/locale/locale_zh-TW.ini

@ -15,7 +15,7 @@ template=樣板
language=語言 language=語言
create_new=創建... create_new=創建...
user_profile_and_more=用戶信息及更多 user_profile_and_more=用戶信息及更多
signed_in_as=已登用戶 signed_in_as=已登用戶
username=用戶名稱 username=用戶名稱
email=電子郵件 email=電子郵件
@ -157,7 +157,7 @@ reset_password=重置密碼
invalid_code=對不起,您的確認代碼已過期或已失效。 invalid_code=對不起,您的確認代碼已過期或已失效。
reset_password_helper=單擊此處重置密碼 reset_password_helper=單擊此處重置密碼
password_too_short=密碼長度不能少於 6 位! password_too_short=密碼長度不能少於 6 位!
non_local_account=Non-local accounts cannot change passwords through Gogs. non_local_account=非本地帳戶無法通過 Gogs 修改密碼。
[mail] [mail]
activate_account=請激活您的帳戶 activate_account=請激活您的帳戶
@ -220,7 +220,7 @@ org_still_own_repo=該組織仍然是某些倉庫的擁有者,您必須先轉
target_branch_not_exist=目標分支不存在 target_branch_not_exist=目標分支不存在
[user] [user]
change_avatar=Change your avatar change_avatar=更改頭像
join_on=加入於 join_on=加入於
repositories=倉庫列表 repositories=倉庫列表
activity=公開活動 activity=公開活動
@ -350,8 +350,8 @@ readme_helper=請選擇readme模板
auto_init=使用選定的文件和模板初始化倉庫 auto_init=使用選定的文件和模板初始化倉庫
create_repo=創建倉庫 create_repo=創建倉庫
default_branch=默認分支 default_branch=默認分支
mirror_prune=Prune mirror_prune=裁減
mirror_prune_desc=Remove any remote-tracking references that no longer exist on the remote mirror_prune_desc=當遠程追蹤的引用被刪除時本地也會同步刪除
mirror_interval=鏡像同步周期(小時) mirror_interval=鏡像同步周期(小時)
mirror_address=鏡像地址 mirror_address=鏡像地址
mirror_address_desc=請在位址中包括必要的使用者憑據。 mirror_address_desc=請在位址中包括必要的使用者憑據。
@ -563,10 +563,10 @@ wiki.last_updated=最後更新於 %s
settings=倉庫設置 settings=倉庫設置
settings.options=基本設置 settings.options=基本設置
settings.collaboration=管理協作者 settings.collaboration=管理協作者
settings.collaboration.admin=Admin settings.collaboration.admin=管理權限
settings.collaboration.write=Write settings.collaboration.write=可寫權限
settings.collaboration.read=Read settings.collaboration.read=可讀權限
settings.collaboration.undefined=Undefined settings.collaboration.undefined=未定義
settings.hooks=管理 Web 鉤子 settings.hooks=管理 Web 鉤子
settings.githooks=管理 Git 鉤子 settings.githooks=管理 Git 鉤子
settings.basic_settings=基本設置 settings.basic_settings=基本設置
@ -581,9 +581,9 @@ settings.external_wiki_url_desc=當分頁上按一下,訪客將會重新導到
settings.issues_desc=啟用內置的輕量級問題管理系統 settings.issues_desc=啟用內置的輕量級問題管理系統
settings.use_external_issue_tracker=使用外部的問題管理系統 settings.use_external_issue_tracker=使用外部的問題管理系統
settings.tracker_url_format=外部問題管理系統的 URL 格式 settings.tracker_url_format=外部問題管理系統的 URL 格式
settings.tracker_issue_style=External Issue Tracker Naming Style: settings.tracker_issue_style=外部公單管理系統命名風格:
settings.tracker_issue_style.numeric=Numeric <span class="ui light grey text">(1234)</span> settings.tracker_issue_style.numeric=僅數字 <span class="ui light grey text">(1234)</span>
settings.tracker_issue_style.alphanumeric=Alphanumeric <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span> settings.tracker_issue_style.alphanumeric=數字與字母結合 <span class="ui light grey text">(ABC-123, DEFG-234, ...)</span>
settings.tracker_url_format_desc=您可以使用 <code>{user} {repo} {index}</code> 分別作為用戶名、倉庫名和問題索引的占位符。 settings.tracker_url_format_desc=您可以使用 <code>{user} {repo} {index}</code> 分別作為用戶名、倉庫名和問題索引的占位符。
settings.pulls_desc=啟用合併請求以接受社區貢獻 settings.pulls_desc=啟用合併請求以接受社區貢獻
settings.danger_zone=危險操作區 settings.danger_zone=危險操作區
@ -606,7 +606,7 @@ settings.delete=刪除本倉庫
settings.delete_desc=刪除倉庫操作不可逆轉,請三思而後行。 settings.delete_desc=刪除倉庫操作不可逆轉,請三思而後行。
settings.delete_notices_1=- 此操作 <strong>不可以</strong> 被回滾。 settings.delete_notices_1=- 此操作 <strong>不可以</strong> 被回滾。
settings.delete_notices_2=- 此操作將永久刪除該倉庫,包括 Git 數據、 問題、 評論和協作者的操作權限。 settings.delete_notices_2=- 此操作將永久刪除該倉庫,包括 Git 數據、 問題、 評論和協作者的操作權限。
settings.delete_notices_fork_1=- All forks will become independent after deletion. settings.delete_notices_fork_1=- 刪除後所有的派生倉庫將會成為獨立倉庫
settings.deletion_success=倉庫刪除成功! settings.deletion_success=倉庫刪除成功!
settings.update_settings_success=倉庫設置更新成功! settings.update_settings_success=倉庫設置更新成功!
settings.transfer_owner=新擁有者 settings.transfer_owner=新擁有者
@ -690,8 +690,8 @@ diff.show_unified_view=統一視圖
diff.stats_desc=共有 <strong> %d 個文件被更改</strong>,包括 <strong>%d 次插入</strong> 和 <strong>%d 次删除</strong> diff.stats_desc=共有 <strong> %d 個文件被更改</strong>,包括 <strong>%d 次插入</strong> 和 <strong>%d 次删除</strong>
diff.bin=二進制 diff.bin=二進制
diff.view_file=查看文件 diff.view_file=查看文件
diff.file_supressed=File diff supressed because it is too large diff.file_supressed=文件差異過大導致無法顯示
diff.too_many_files=Some files were not shown because too many files changed in this diff diff.too_many_files=部分文件因文件數量過多而無法顯示
release.releases=版本發佈 release.releases=版本發佈
release.new_release=發佈新版本 release.new_release=發佈新版本
@ -919,7 +919,7 @@ auths.enabled=已啟用
auths.updated=最後更新時間 auths.updated=最後更新時間
auths.auth_type=認證類型 auths.auth_type=認證類型
auths.auth_name=認證名稱 auths.auth_name=認證名稱
auths.security_protocol=Security Protocol auths.security_protocol=安全協定
auths.domain=域名 auths.domain=域名
auths.host=主機地址 auths.host=主機地址
auths.port=主機端口 auths.port=主機端口
@ -933,7 +933,7 @@ auths.attribute_username_placeholder=留空表示使用用戶登錄時所使用
auths.attribute_name=名子屬性 auths.attribute_name=名子屬性
auths.attribute_surname=姓氏屬性 auths.attribute_surname=姓氏屬性
auths.attribute_mail=電子郵箱屬性 auths.attribute_mail=電子郵箱屬性
auths.attributes_in_bind=Fetch attributes in Bind DN context auths.attributes_in_bind=從 Bind DN 中獲取屬性信息
auths.filter=使用者篩選器 auths.filter=使用者篩選器
auths.admin_filter=管理者篩選器 auths.admin_filter=管理者篩選器
auths.ms_ad_sa=Ms Ad SA auths.ms_ad_sa=Ms Ad SA

4
glide.lock generated

@ -74,7 +74,7 @@ imports:
- name: github.com/nfnt/resize - name: github.com/nfnt/resize
version: 4d93a29130b1b6aba503e2aa8b50f516213ea80e version: 4d93a29130b1b6aba503e2aa8b50f516213ea80e
- name: github.com/russross/blackfriday - name: github.com/russross/blackfriday
version: 1d6b8e9301e720b08a8938b8c25c018285885438 version: 4e6f303e8d936855981ddcdbfc092b03d2b2b68e
- name: github.com/satori/go.uuid - name: github.com/satori/go.uuid
version: 879c5887cd475cd7864858769793b2ceb0d44feb version: 879c5887cd475cd7864858769793b2ceb0d44feb
- name: github.com/sergi/go-diff - name: github.com/sergi/go-diff
@ -142,7 +142,7 @@ imports:
- name: gopkg.in/ldap.v2 - name: gopkg.in/ldap.v2
version: 0e7db8eb77695b5a952f0e5d78df9ab160050c73 version: 0e7db8eb77695b5a952f0e5d78df9ab160050c73
- name: gopkg.in/macaron.v1 - name: gopkg.in/macaron.v1
version: 94a5ef7105036242f79e5e07a8eb8651d06c8533 version: 2133042f8d1022b8253e4e23f7940467941409ce
- name: gopkg.in/redis.v2 - name: gopkg.in/redis.v2
version: e6179049628164864e6e84e973cfb56335748dea version: e6179049628164864e6e84e973cfb56335748dea
devImports: [] devImports: []

2
gogs.go

@ -17,7 +17,7 @@ import (
"github.com/gogits/gogs/modules/setting" "github.com/gogits/gogs/modules/setting"
) )
const APP_VER = "0.9.44.0716" const APP_VER = "0.9.46.0717"
func init() { func init() {
runtime.GOMAXPROCS(runtime.NumCPU()) runtime.GOMAXPROCS(runtime.NumCPU())

42
models/issue.go

@ -520,55 +520,55 @@ func Issues(opts *IssuesOptions) ([]*Issue, error) {
sess := x.Limit(setting.IssuePagingNum, (opts.Page-1)*setting.IssuePagingNum) sess := x.Limit(setting.IssuePagingNum, (opts.Page-1)*setting.IssuePagingNum)
if opts.RepoID > 0 { if opts.RepoID > 0 {
sess.Where("issue.repo_id=?", opts.RepoID).And("is_closed=?", opts.IsClosed) sess.Where("issue.repo_id=?", opts.RepoID).And("issue.is_closed=?", opts.IsClosed)
} else if opts.RepoIDs != nil { } else if opts.RepoIDs != nil {
// In case repository IDs are provided but actually no repository has issue. // In case repository IDs are provided but actually no repository has issue.
if len(opts.RepoIDs) == 0 { if len(opts.RepoIDs) == 0 {
return make([]*Issue, 0), nil return make([]*Issue, 0), nil
} }
sess.In("repo_id", base.Int64sToStrings(opts.RepoIDs)).And("is_closed=?", opts.IsClosed) sess.In("issue.repo_id", base.Int64sToStrings(opts.RepoIDs)).And("issue.is_closed=?", opts.IsClosed)
} else { } else {
sess.Where("issue.is_closed=?", opts.IsClosed) sess.Where("issue.is_closed=?", opts.IsClosed)
} }
if opts.AssigneeID > 0 { if opts.AssigneeID > 0 {
sess.And("assignee_id=?", opts.AssigneeID) sess.And("issue.assignee_id=?", opts.AssigneeID)
} else if opts.PosterID > 0 { } else if opts.PosterID > 0 {
sess.And("poster_id=?", opts.PosterID) sess.And("issue.poster_id=?", opts.PosterID)
} }
if opts.MilestoneID > 0 { if opts.MilestoneID > 0 {
sess.And("milestone_id=?", opts.MilestoneID) sess.And("issue.milestone_id=?", opts.MilestoneID)
} }
sess.And("is_pull=?", opts.IsPull) sess.And("issue.is_pull=?", opts.IsPull)
switch opts.SortType { switch opts.SortType {
case "oldest": case "oldest":
sess.Asc("created_unix") sess.Asc("issue.created_unix")
case "recentupdate": case "recentupdate":
sess.Desc("updated_unix") sess.Desc("issue.updated_unix")
case "leastupdate": case "leastupdate":
sess.Asc("updated_unix") sess.Asc("issue.updated_unix")
case "mostcomment": case "mostcomment":
sess.Desc("num_comments") sess.Desc("issue.num_comments")
case "leastcomment": case "leastcomment":
sess.Asc("num_comments") sess.Asc("issue.num_comments")
case "priority": case "priority":
sess.Desc("priority") sess.Desc("issue.priority")
default: default:
sess.Desc("created_unix") sess.Desc("issue.created_unix")
} }
if len(opts.Labels) > 0 && opts.Labels != "0" { if len(opts.Labels) > 0 && opts.Labels != "0" {
labelIDs := base.StringsToInt64s(strings.Split(opts.Labels, ",")) labelIDs := base.StringsToInt64s(strings.Split(opts.Labels, ","))
if len(labelIDs) > 0 { if len(labelIDs) > 0 {
sess.Join("INNER", "issue_label", "issue.id = issue_label.issue_id").In("label_id", labelIDs) sess.Join("INNER", "issue_label", "issue.id = issue_label.issue_id").In("issue.label_id", labelIDs)
} }
} }
if opts.IsMention { if opts.IsMention {
sess.Join("INNER", "issue_user", "issue.id = issue_user.issue_id").And("is_mentioned = ?", true) sess.Join("INNER", "issue_user", "issue.id = issue_user.issue_id").And("issue_user.is_mentioned = ?", true)
if opts.UserID > 0 { if opts.UserID > 0 {
sess.And("issue_user.uid = ?", opts.UserID) sess.And("issue_user.uid = ?", opts.UserID)
@ -841,16 +841,16 @@ func GetIssueStats(opts *IssueStatsOptions) *IssueStats {
case FM_MENTION: case FM_MENTION:
stats.OpenCount, _ = countSession(opts). stats.OpenCount, _ = countSession(opts).
Join("INNER", "issue_user", "issue.id = issue_user.issue_id"). Join("INNER", "issue_user", "issue.id = issue_user.issue_id").
And("uid = ?", opts.UserID). And("issue_user.uid = ?", opts.UserID).
And("is_mentioned = ?", true). And("issue_user.is_mentioned = ?", true).
And("is_closed = ?", false). And("issue.is_closed = ?", false).
Count(&Issue{}) Count(&Issue{})
stats.ClosedCount, _ = countSession(opts). stats.ClosedCount, _ = countSession(opts).
Join("INNER", "issue_user", "issue.id = issue_user.issue_id"). Join("INNER", "issue_user", "issue.id = issue_user.issue_id").
And("uid = ?", opts.UserID). And("issue_user.uid = ?", opts.UserID).
And("is_mentioned = ?", true). And("issue_user.is_mentioned = ?", true).
And("is_closed = ?", true). And("issue.is_closed = ?", true).
Count(&Issue{}) Count(&Issue{})
} }
return stats return stats

4
models/migrations/migrations.go

@ -51,7 +51,7 @@ func (m *migration) Migrate(x *xorm.Engine) error {
// The version table. Should have only one row with id==1 // The version table. Should have only one row with id==1
type Version struct { type Version struct {
Id int64 ID int64 `xorm:"pk autoincr"`
Version int64 Version int64
} }
@ -76,7 +76,7 @@ func Migrate(x *xorm.Engine) error {
return fmt.Errorf("sync: %v", err) return fmt.Errorf("sync: %v", err)
} }
currentVersion := &Version{Id: 1} currentVersion := &Version{ID: 1}
has, err := x.Get(currentVersion) has, err := x.Get(currentVersion)
if err != nil { if err != nil {
return fmt.Errorf("get: %v", err) return fmt.Errorf("get: %v", err)

179
models/user.go

@ -82,10 +82,11 @@ type User struct {
MaxRepoCreation int `xorm:"NOT NULL DEFAULT -1"` MaxRepoCreation int `xorm:"NOT NULL DEFAULT -1"`
// Permissions // Permissions
IsActive bool IsActive bool // Activate primary email
IsAdmin bool IsAdmin bool
AllowGitHook bool AllowGitHook bool
AllowImportLocal bool // Allow migrate repository by local path AllowImportLocal bool // Allow migrate repository by local path
ProhibitLogin bool
// Avatar // Avatar
Avatar string `xorm:"VARCHAR(2048) NOT NULL"` Avatar string `xorm:"VARCHAR(2048) NOT NULL"`
@ -167,16 +168,6 @@ func (u *User) CanImportLocal() bool {
return u.IsAdmin || u.AllowImportLocal return u.IsAdmin || u.AllowImportLocal
} }
// EmailAdresses is the list of all email addresses of a user. Can contain the
// primary email address, but is not obligatory
type EmailAddress struct {
ID int64 `xorm:"pk autoincr"`
UID int64 `xorm:"INDEX NOT NULL"`
Email string `xorm:"UNIQUE NOT NULL"`
IsActivated bool
IsPrimary bool `xorm:"-"`
}
// DashboardLink returns the user dashboard page link. // DashboardLink returns the user dashboard page link.
func (u *User) DashboardLink() string { func (u *User) DashboardLink() string {
if u.IsOrganization() { if u.IsOrganization() {
@ -263,11 +254,11 @@ func (u *User) RelAvatarLink() string {
return setting.GravatarSource + u.Avatar return setting.GravatarSource + u.Avatar
} }
// AvatarLink returns user gravatar link. // AvatarLink returns user avatar link.
func (u *User) AvatarLink() string { func (u *User) AvatarLink() string {
link := u.RelAvatarLink() link := u.RelAvatarLink()
if link[0] == '/' && link[1] != '/' { if link[0] == '/' && link[1] != '/' {
return setting.AppSubUrl + link return strings.TrimSuffix(setting.AppUrl, "/") + link
} }
return link return link
} }
@ -464,19 +455,6 @@ func IsUserExist(uid int64, name string) (bool, error) {
return x.Where("id!=?", uid).Get(&User{LowerName: strings.ToLower(name)}) return x.Where("id!=?", uid).Get(&User{LowerName: strings.ToLower(name)})
} }
// IsEmailUsed returns true if the e-mail has been used.
func IsEmailUsed(email string) (bool, error) {
if len(email) == 0 {
return false, nil
}
email = strings.ToLower(email)
if has, err := x.Get(&EmailAddress{Email: email}); has || err != nil {
return has, err
}
return x.Get(&User{Email: email})
}
// GetUserSalt returns a ramdom user salt token. // GetUserSalt returns a ramdom user salt token.
func GetUserSalt() string { func GetUserSalt() string {
return base.GetRandomString(10) return base.GetRandomString(10)
@ -521,16 +499,14 @@ func CreateUser(u *User) (err error) {
u.MaxRepoCreation = -1 u.MaxRepoCreation = -1
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sessionRelease(sess)
if err = sess.Begin(); err != nil { if err = sess.Begin(); err != nil {
return err return err
} }
if _, err = sess.Insert(u); err != nil { if _, err = sess.Insert(u); err != nil {
sess.Rollback()
return err return err
} else if err = os.MkdirAll(UserPath(u.Name), os.ModePerm); err != nil { } else if err = os.MkdirAll(UserPath(u.Name), os.ModePerm); err != nil {
sess.Rollback()
return err return err
} }
@ -888,8 +864,8 @@ func GetUserEmailsByNames(names []string) []string {
return mails return mails
} }
// GetUserIdsByNames returns a slice of ids corresponds to names. // GetUserIDsByNames returns a slice of ids corresponds to names.
func GetUserIdsByNames(names []string) []int64 { func GetUserIDsByNames(names []string) []int64 {
ids := make([]int64, 0, len(names)) ids := make([]int64, 0, len(names))
for _, name := range names { for _, name := range names {
u, err := GetUserByName(name) u, err := GetUserByName(name)
@ -901,147 +877,6 @@ func GetUserIdsByNames(names []string) []int64 {
return ids return ids
} }
// GetEmailAddresses returns all e-mail addresses belongs to given user.
func GetEmailAddresses(uid int64) ([]*EmailAddress, error) {
emails := make([]*EmailAddress, 0, 5)
err := x.Where("uid=?", uid).Find(&emails)
if err != nil {
return nil, err
}
u, err := GetUserByID(uid)
if err != nil {
return nil, err
}
isPrimaryFound := false
for _, email := range emails {
if email.Email == u.Email {
isPrimaryFound = true
email.IsPrimary = true
} else {
email.IsPrimary = false
}
}
// We alway want the primary email address displayed, even if it's not in
// the emailaddress table (yet)
if !isPrimaryFound {
emails = append(emails, &EmailAddress{
Email: u.Email,
IsActivated: true,
IsPrimary: true,
})
}
return emails, nil
}
func AddEmailAddress(email *EmailAddress) error {
email.Email = strings.ToLower(strings.TrimSpace(email.Email))
used, err := IsEmailUsed(email.Email)
if err != nil {
return err
} else if used {
return ErrEmailAlreadyUsed{email.Email}
}
_, err = x.Insert(email)
return err
}
func AddEmailAddresses(emails []*EmailAddress) error {
if len(emails) == 0 {
return nil
}
// Check if any of them has been used
for i := range emails {
emails[i].Email = strings.ToLower(strings.TrimSpace(emails[i].Email))
used, err := IsEmailUsed(emails[i].Email)
if err != nil {
return err
} else if used {
return ErrEmailAlreadyUsed{emails[i].Email}
}
}
if _, err := x.Insert(emails); err != nil {
return fmt.Errorf("Insert: %v", err)
}
return nil
}
func (email *EmailAddress) Activate() error {
email.IsActivated = true
if _, err := x.Id(email.ID).AllCols().Update(email); err != nil {
return err
}
if user, err := GetUserByID(email.UID); err != nil {
return err
} else {
user.Rands = GetUserSalt()
return UpdateUser(user)
}
}
func DeleteEmailAddress(email *EmailAddress) (err error) {
if email.ID > 0 {
_, err = x.Id(email.ID).Delete(new(EmailAddress))
} else {
_, err = x.Where("email=?", email.Email).Delete(new(EmailAddress))
}
return err
}
func DeleteEmailAddresses(emails []*EmailAddress) (err error) {
for i := range emails {
if err = DeleteEmailAddress(emails[i]); err != nil {
return err
}
}
return nil
}
func MakeEmailPrimary(email *EmailAddress) error {
has, err := x.Get(email)
if err != nil {
return err
} else if !has {
return ErrEmailNotExist
}
if !email.IsActivated {
return ErrEmailNotActivated
}
user := &User{Id: email.UID}
has, err = x.Get(user)
if err != nil {
return err
} else if !has {
return ErrUserNotExist{email.UID, ""}
}
// Make sure the former primary email doesn't disappear
former_primary_email := &EmailAddress{Email: user.Email}
has, err = x.Get(former_primary_email)
if err != nil {
return err
} else if !has {
former_primary_email.UID = user.Id
former_primary_email.IsActivated = user.IsActive
x.Insert(former_primary_email)
}
user.Email = email.Email
_, err = x.Id(user.Id).AllCols().Update(user)
return err
}
// UserCommit represents a commit with validation of user. // UserCommit represents a commit with validation of user.
type UserCommit struct { type UserCommit struct {
User *User User *User

198
models/user_mail.go

@ -0,0 +1,198 @@
// Copyright 2016 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package models
import (
"fmt"
"strings"
)
// EmailAdresses is the list of all email addresses of a user. Can contain the
// primary email address, but is not obligatory.
type EmailAddress struct {
ID int64 `xorm:"pk autoincr"`
UID int64 `xorm:"INDEX NOT NULL"`
Email string `xorm:"UNIQUE NOT NULL"`
IsActivated bool
IsPrimary bool `xorm:"-"`
}
// GetEmailAddresses returns all email addresses belongs to given user.
func GetEmailAddresses(uid int64) ([]*EmailAddress, error) {
emails := make([]*EmailAddress, 0, 5)
if err := x.Where("uid=?", uid).Find(&emails); err != nil {
return nil, err
}
u, err := GetUserByID(uid)
if err != nil {
return nil, err
}
isPrimaryFound := false
for _, email := range emails {
if email.Email == u.Email {
isPrimaryFound = true
email.IsPrimary = true
} else {
email.IsPrimary = false
}
}
// We alway want the primary email address displayed, even if it's not in
// the emailaddress table (yet).
if !isPrimaryFound {
emails = append(emails, &EmailAddress{
Email: u.Email,
IsActivated: true,
IsPrimary: true,
})
}
return emails, nil
}
func isEmailUsed(e Engine, email string) (bool, error) {
if len(email) == 0 {
return true, nil
}
return e.Get(&EmailAddress{Email: email})
}
// IsEmailUsed returns true if the email has been used.
func IsEmailUsed(email string) (bool, error) {
return isEmailUsed(x, email)
}
func addEmailAddress(e Engine, email *EmailAddress) error {
email.Email = strings.ToLower(strings.TrimSpace(email.Email))
used, err := isEmailUsed(e, email.Email)
if err != nil {
return err
} else if used {
return ErrEmailAlreadyUsed{email.Email}
}
_, err = e.Insert(email)
return err
}
func AddEmailAddress(email *EmailAddress) error {
return addEmailAddress(x, email)
}
func AddEmailAddresses(emails []*EmailAddress) error {
if len(emails) == 0 {
return nil
}
// Check if any of them has been used
for i := range emails {
emails[i].Email = strings.ToLower(strings.TrimSpace(emails[i].Email))
used, err := IsEmailUsed(emails[i].Email)
if err != nil {
return err
} else if used {
return ErrEmailAlreadyUsed{emails[i].Email}
}
}
if _, err := x.Insert(emails); err != nil {
return fmt.Errorf("Insert: %v", err)
}
return nil
}
func (email *EmailAddress) Activate() error {
user, err := GetUserByID(email.UID)
if err != nil {
return err
}
user.Rands = GetUserSalt()
sess := x.NewSession()
defer sessionRelease(sess)
if err = sess.Begin(); err != nil {
return err
}
email.IsActivated = true
if _, err := sess.Id(email.ID).AllCols().Update(email); err != nil {
return err
} else if err = updateUser(sess, user); err != nil {
return err
}
return sess.Commit()
}
func DeleteEmailAddress(email *EmailAddress) (err error) {
if email.ID > 0 {
_, err = x.Id(email.ID).Delete(new(EmailAddress))
} else {
_, err = x.Where("email=?", email.Email).Delete(new(EmailAddress))
}
return err
}
func DeleteEmailAddresses(emails []*EmailAddress) (err error) {
for i := range emails {
if err = DeleteEmailAddress(emails[i]); err != nil {
return err
}
}
return nil
}
func MakeEmailPrimary(email *EmailAddress) error {
has, err := x.Get(email)
if err != nil {
return err
} else if !has {
return ErrEmailNotExist
}
if !email.IsActivated {
return ErrEmailNotActivated
}
user := &User{Id: email.UID}
has, err = x.Get(user)
if err != nil {
return err
} else if !has {
return ErrUserNotExist{email.UID, ""}
}
// Make sure the former primary email doesn't disappear.
formerPrimaryEmail := &EmailAddress{Email: user.Email}
has, err = x.Get(formerPrimaryEmail)
if err != nil {
return err
}
sess := x.NewSession()
defer sessionRelease(sess)
if err = sess.Begin(); err != nil {
return err
}
if !has {
formerPrimaryEmail.UID = user.Id
formerPrimaryEmail.IsActivated = user.IsActive
if _, err = sess.Insert(formerPrimaryEmail); err != nil {
return err
}
}
user.Email = email.Email
if _, err = sess.Id(user.Id).AllCols().Update(user); err != nil {
return err
}
return sess.Commit()
}

57
models/webhook.go

@ -174,28 +174,32 @@ func CreateWebhook(w *Webhook) error {
return err return err
} }
// GetWebhookByRepoID returns webhook of repository by given ID. // getWebhook uses argument bean as query condition,
func GetWebhookByRepoID(repoID, id int64) (*Webhook, error) { // ID must be specified and do not assign unnecessary fields.
w := new(Webhook) func getWebhook(bean *Webhook) (*Webhook, error) {
has, err := x.Id(id).And("repo_id=?", repoID).Get(w) has, err := x.Get(bean)
if err != nil { if err != nil {
return nil, err return nil, err
} else if !has { } else if !has {
return nil, ErrWebhookNotExist{id} return nil, ErrWebhookNotExist{bean.ID}
} }
return w, nil return bean, nil
}
// GetWebhookByRepoID returns webhook of repository by given ID.
func GetWebhookByRepoID(repoID, id int64) (*Webhook, error) {
return getWebhook(&Webhook{
ID: id,
RepoID: repoID,
})
} }
// GetWebhookByOrgID returns webhook of organization by given ID. // GetWebhookByOrgID returns webhook of organization by given ID.
func GetWebhookByOrgID(orgID, id int64) (*Webhook, error) { func GetWebhookByOrgID(orgID, id int64) (*Webhook, error) {
w := new(Webhook) return getWebhook(&Webhook{
has, err := x.Id(id).And("org_id=?", orgID).Get(w) ID: id,
if err != nil { OrgID: orgID,
return nil, err })
} else if !has {
return nil, ErrWebhookNotExist{id}
}
return w, nil
} }
// GetActiveWebhooksByRepoID returns all active webhooks of repository. // GetActiveWebhooksByRepoID returns all active webhooks of repository.
@ -216,23 +220,40 @@ func UpdateWebhook(w *Webhook) error {
return err return err
} }
// DeleteWebhook deletes webhook of repository. // deleteWebhook uses argument bean as query condition,
func DeleteWebhook(id int64) (err error) { // ID must be specified and do not assign unnecessary fields.
func deleteWebhook(bean *Webhook) (err error) {
sess := x.NewSession() sess := x.NewSession()
defer sessionRelease(sess) defer sessionRelease(sess)
if err = sess.Begin(); err != nil { if err = sess.Begin(); err != nil {
return err return err
} }
if _, err = sess.Delete(&Webhook{ID: id}); err != nil { if _, err = sess.Delete(bean); err != nil {
return err return err
} else if _, err = sess.Delete(&HookTask{HookID: id}); err != nil { } else if _, err = sess.Delete(&HookTask{HookID: bean.ID}); err != nil {
return err return err
} }
return sess.Commit() return sess.Commit()
} }
// DeleteWebhookByRepoID deletes webhook of repository by given ID.
func DeleteWebhookByRepoID(repoID, id int64) (error) {
return deleteWebhook(&Webhook{
ID: id,
RepoID: repoID,
})
}
// DeleteWebhookByOrgID deletes webhook of organization by given ID.
func DeleteWebhookByOrgID(orgID, id int64) (error) {
return deleteWebhook(&Webhook{
ID: id,
OrgID: orgID,
})
}
// GetWebhooksByOrgID returns all webhooks for an organization. // GetWebhooksByOrgID returns all webhooks for an organization.
func GetWebhooksByOrgID(orgID int64) (ws []*Webhook, err error) { func GetWebhooksByOrgID(orgID int64) (ws []*Webhook, err error) {
err = x.Find(&ws, &Webhook{OrgID: orgID}) err = x.Find(&ws, &Webhook{OrgID: orgID})

1
modules/auth/admin.go

@ -36,6 +36,7 @@ type AdminEditUserForm struct {
Admin bool Admin bool
AllowGitHook bool AllowGitHook bool
AllowImportLocal bool AllowImportLocal bool
ProhibitLogin bool
} }
func (f *AdminEditUserForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { func (f *AdminEditUserForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {

2
modules/auth/repo_form.go

@ -143,7 +143,7 @@ func (f *NewWebhookForm) Validate(ctx *macaron.Context, errs binding.Errors) bin
} }
type NewSlackHookForm struct { type NewSlackHookForm struct {
PayloadURL string `binding:"Required;Url` PayloadURL string `binding:"Required;Url"`
Channel string `binding:"Required"` Channel string `binding:"Required"`
Username string Username string
IconURL string IconURL string

1121
modules/bindata/bindata.go

File diff suppressed because one or more lines are too long

9
modules/context/auth.go

@ -29,7 +29,14 @@ func Toggle(options *ToggleOptions) macaron.Handler {
return return
} }
// Checking non-logged users landing page. // Check prohibit login users.
if ctx.IsSigned && ctx.User.ProhibitLogin {
ctx.Data["Title"] = ctx.Tr("auth.prohibit_login")
ctx.HTML(200, "user/auth/prohibit_login")
return
}
// Check non-logged users landing page.
if !ctx.IsSigned && ctx.Req.RequestURI == "/" && setting.LandingPageUrl != setting.LANDING_PAGE_HOME { if !ctx.IsSigned && ctx.Req.RequestURI == "/" && setting.LandingPageUrl != setting.LANDING_PAGE_HOME {
ctx.Redirect(setting.AppSubUrl + string(setting.LandingPageUrl)) ctx.Redirect(setting.AppSubUrl + string(setting.LandingPageUrl))
return return

2
modules/template/template.go

@ -241,7 +241,7 @@ func ActionIcon(opType int) string {
case 7: // New pull request case 7: // New pull request
return "git-pull-request" return "git-pull-request"
case 10: // Comment issue case 10: // Comment issue
return "comment" return "comment-discussion"
case 11: // Merge pull request case 11: // Merge pull request
return "git-merge" return "git-merge"
case 12, 14: // Close issue or pull request case 12, 14: // Close issue or pull request

226
public/assets/octicons-3.5.0/octicons.css vendored

@ -1,226 +0,0 @@
@font-face {
font-family: 'octicons';
src: url('octicons.eot?#iefix') format('embedded-opentype'),
url('octicons.woff') format('woff'),
url('octicons.ttf') format('truetype'),
url('octicons.svg#octicons') format('svg');
font-weight: normal;
font-style: normal;
}
/*
.octicon is optimized for 16px.
.mega-octicon is optimized for 32px but can be used larger.
*/
.octicon, .mega-octicon {
font: normal normal normal 16px/1 octicons;
display: inline-block;
text-decoration: none;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mega-octicon { font-size: 32px; }
.octicon-alert:before { content: '\f02d'} /* */
.octicon-arrow-down:before { content: '\f03f'} /* */
.octicon-arrow-left:before { content: '\f040'} /* */
.octicon-arrow-right:before { content: '\f03e'} /* */
.octicon-arrow-small-down:before { content: '\f0a0'} /* */
.octicon-arrow-small-left:before { content: '\f0a1'} /* */
.octicon-arrow-small-right:before { content: '\f071'} /* */
.octicon-arrow-small-up:before { content: '\f09f'} /* */
.octicon-arrow-up:before { content: '\f03d'} /* */
.octicon-microscope:before,
.octicon-beaker:before { content: '\f0dd'} /* */
.octicon-bell:before { content: '\f0de'} /* */
.octicon-bold:before { content: '\f0e2'} /* */
.octicon-book:before { content: '\f007'} /* */
.octicon-bookmark:before { content: '\f07b'} /* */
.octicon-briefcase:before { content: '\f0d3'} /* */
.octicon-broadcast:before { content: '\f048'} /* */
.octicon-browser:before { content: '\f0c5'} /* */
.octicon-bug:before { content: '\f091'} /* */
.octicon-calendar:before { content: '\f068'} /* */
.octicon-check:before { content: '\f03a'} /* */
.octicon-checklist:before { content: '\f076'} /* */
.octicon-chevron-down:before { content: '\f0a3'} /* */
.octicon-chevron-left:before { content: '\f0a4'} /* */
.octicon-chevron-right:before { content: '\f078'} /* */
.octicon-chevron-up:before { content: '\f0a2'} /* */
.octicon-circle-slash:before { content: '\f084'} /* */
.octicon-circuit-board:before { content: '\f0d6'} /* */
.octicon-clippy:before { content: '\f035'} /* */
.octicon-clock:before { content: '\f046'} /* */
.octicon-cloud-download:before { content: '\f00b'} /* */
.octicon-cloud-upload:before { content: '\f00c'} /* */
.octicon-code:before { content: '\f05f'} /* */
.octicon-comment-add:before,
.octicon-comment:before { content: '\f02b'} /* */
.octicon-comment-discussion:before { content: '\f04f'} /* */
.octicon-credit-card:before { content: '\f045'} /* */
.octicon-dash:before { content: '\f0ca'} /* */
.octicon-dashboard:before { content: '\f07d'} /* */
.octicon-database:before { content: '\f096'} /* */
.octicon-clone:before,
.octicon-desktop-download:before { content: '\f0dc'} /* */
.octicon-device-camera:before { content: '\f056'} /* */
.octicon-device-camera-video:before { content: '\f057'} /* */
.octicon-device-desktop:before { content: '\f27c'} /* */
.octicon-device-mobile:before { content: '\f038'} /* */
.octicon-diff:before { content: '\f04d'} /* */
.octicon-diff-added:before { content: '\f06b'} /* */
.octicon-diff-ignored:before { content: '\f099'} /* */
.octicon-diff-modified:before { content: '\f06d'} /* */
.octicon-diff-removed:before { content: '\f06c'} /* */
.octicon-diff-renamed:before { content: '\f06e'} /* */
.octicon-ellipsis:before { content: '\f09a'} /* */
.octicon-eye-unwatch:before,
.octicon-eye-watch:before,
.octicon-eye:before { content: '\f04e'} /* */
.octicon-file-binary:before { content: '\f094'} /* */
.octicon-file-code:before { content: '\f010'} /* */
.octicon-file-directory:before { content: '\f016'} /* */
.octicon-file-media:before { content: '\f012'} /* */
.octicon-file-pdf:before { content: '\f014'} /* */
.octicon-file-submodule:before { content: '\f017'} /* */
.octicon-file-symlink-directory:before { content: '\f0b1'} /* */
.octicon-file-symlink-file:before { content: '\f0b0'} /* */
.octicon-file-text:before { content: '\f011'} /* */
.octicon-file-zip:before { content: '\f013'} /* */
.octicon-flame:before { content: '\f0d2'} /* */
.octicon-fold:before { content: '\f0cc'} /* */
.octicon-gear:before { content: '\f02f'} /* */
.octicon-gift:before { content: '\f042'} /* */
.octicon-gist:before { content: '\f00e'} /* */
.octicon-gist-secret:before { content: '\f08c'} /* */
.octicon-git-branch-create:before,
.octicon-git-branch-delete:before,
.octicon-git-branch:before { content: '\f020'} /* */
.octicon-git-commit:before { content: '\f01f'} /* */
.octicon-git-compare:before { content: '\f0ac'} /* */
.octicon-git-merge:before { content: '\f023'} /* */
.octicon-git-pull-request-abandoned:before,
.octicon-git-pull-request:before { content: '\f009'} /* */
.octicon-globe:before { content: '\f0b6'} /* */
.octicon-graph:before { content: '\f043'} /* */
.octicon-heart:before { content: '\2665'} /* ♥ */
.octicon-history:before { content: '\f07e'} /* */
.octicon-home:before { content: '\f08d'} /* */
.octicon-horizontal-rule:before { content: '\f070'} /* */
.octicon-hubot:before { content: '\f09d'} /* */
.octicon-inbox:before { content: '\f0cf'} /* */
.octicon-info:before { content: '\f059'} /* */
.octicon-issue-closed:before { content: '\f028'} /* */
.octicon-issue-opened:before { content: '\f026'} /* */
.octicon-issue-reopened:before { content: '\f027'} /* */
.octicon-italic:before { content: '\f0e4'} /* */
.octicon-jersey:before { content: '\f019'} /* */
.octicon-key:before { content: '\f049'} /* */
.octicon-keyboard:before { content: '\f00d'} /* */
.octicon-law:before { content: '\f0d8'} /* */
.octicon-light-bulb:before { content: '\f000'} /* */
.octicon-link:before { content: '\f05c'} /* */
.octicon-link-external:before { content: '\f07f'} /* */
.octicon-list-ordered:before { content: '\f062'} /* */
.octicon-list-unordered:before { content: '\f061'} /* */
.octicon-location:before { content: '\f060'} /* */
.octicon-gist-private:before,
.octicon-mirror-private:before,
.octicon-git-fork-private:before,
.octicon-lock:before { content: '\f06a'} /* */
.octicon-logo-gist:before { content: '\f0ad'} /* */
.octicon-logo-github:before { content: '\f092'} /* */
.octicon-mail:before { content: '\f03b'} /* */
.octicon-mail-read:before { content: '\f03c'} /* */
.octicon-mail-reply:before { content: '\f051'} /* */
.octicon-mark-github:before { content: '\f00a'} /* */
.octicon-markdown:before { content: '\f0c9'} /* */
.octicon-megaphone:before { content: '\f077'} /* */
.octicon-mention:before { content: '\f0be'} /* */
.octicon-milestone:before { content: '\f075'} /* */
.octicon-mirror-public:before,
.octicon-mirror:before { content: '\f024'} /* */
.octicon-mortar-board:before { content: '\f0d7'} /* */
.octicon-mute:before { content: '\f080'} /* */
.octicon-no-newline:before { content: '\f09c'} /* */
.octicon-octoface:before { content: '\f008'} /* */
.octicon-organization:before { content: '\f037'} /* */
.octicon-package:before { content: '\f0c4'} /* */
.octicon-paintcan:before { content: '\f0d1'} /* */
.octicon-pencil:before { content: '\f058'} /* */
.octicon-person-add:before,
.octicon-person-follow:before,
.octicon-person:before { content: '\f018'} /* */
.octicon-pin:before { content: '\f041'} /* */
.octicon-plug:before { content: '\f0d4'} /* */
.octicon-repo-create:before,
.octicon-gist-new:before,
.octicon-file-directory-create:before,
.octicon-file-add:before,
.octicon-plus:before { content: '\f05d'} /* */
.octicon-primitive-dot:before { content: '\f052'} /* */
.octicon-primitive-square:before { content: '\f053'} /* */
.octicon-pulse:before { content: '\f085'} /* */
.octicon-question:before { content: '\f02c'} /* */
.octicon-quote:before { content: '\f063'} /* */
.octicon-radio-tower:before { content: '\f030'} /* */
.octicon-repo-delete:before,
.octicon-repo:before { content: '\f001'} /* */
.octicon-repo-clone:before { content: '\f04c'} /* */
.octicon-repo-force-push:before { content: '\f04a'} /* */
.octicon-gist-fork:before,
.octicon-repo-forked:before { content: '\f002'} /* */
.octicon-repo-pull:before { content: '\f006'} /* */
.octicon-repo-push:before { content: '\f005'} /* */
.octicon-rocket:before { content: '\f033'} /* */
.octicon-rss:before { content: '\f034'} /* */
.octicon-ruby:before { content: '\f047'} /* */
.octicon-search-save:before,
.octicon-search:before { content: '\f02e'} /* */
.octicon-server:before { content: '\f097'} /* */
.octicon-settings:before { content: '\f07c'} /* */
.octicon-shield:before { content: '\f0e1'} /* */
.octicon-log-in:before,
.octicon-sign-in:before { content: '\f036'} /* */
.octicon-log-out:before,
.octicon-sign-out:before { content: '\f032'} /* */
.octicon-smiley:before { content: '\f0e7'} /* */
.octicon-squirrel:before { content: '\f0b2'} /* */
.octicon-star-add:before,
.octicon-star-delete:before,
.octicon-star:before { content: '\f02a'} /* */
.octicon-stop:before { content: '\f08f'} /* */
.octicon-repo-sync:before,
.octicon-sync:before { content: '\f087'} /* */
.octicon-tag-remove:before,
.octicon-tag-add:before,
.octicon-tag:before { content: '\f015'} /* */
.octicon-tasklist:before { content: '\f0e5'} /* */
.octicon-telescope:before { content: '\f088'} /* */
.octicon-terminal:before { content: '\f0c8'} /* */
.octicon-text-size:before { content: '\f0e3'} /* */
.octicon-three-bars:before { content: '\f05e'} /* */
.octicon-thumbsdown:before { content: '\f0db'} /* */
.octicon-thumbsup:before { content: '\f0da'} /* */
.octicon-tools:before { content: '\f031'} /* */
.octicon-trashcan:before { content: '\f0d0'} /* */
.octicon-triangle-down:before { content: '\f05b'} /* */
.octicon-triangle-left:before { content: '\f044'} /* */
.octicon-triangle-right:before { content: '\f05a'} /* */
.octicon-triangle-up:before { content: '\f0aa'} /* */
.octicon-unfold:before { content: '\f039'} /* */
.octicon-unmute:before { content: '\f0ba'} /* */
.octicon-unverified:before { content: '\f0e8'} /* */
.octicon-verified:before { content: '\f0e6'} /* */
.octicon-versions:before { content: '\f064'} /* */
.octicon-watch:before { content: '\f0e0'} /* */
.octicon-remove-close:before,
.octicon-x:before { content: '\f081'} /* */
.octicon-zap:before { content: '\26A1'} /* ⚡ */

BIN
public/assets/octicons-3.5.0/octicons.eot

Binary file not shown.

188
public/assets/octicons-3.5.0/octicons.svg

@ -1,188 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
(c) 2012-2016 GitHub
When using the GitHub logos, be sure to follow the GitHub logo guidelines (https://github.com/logos)
Font License: SIL OFL 1.1 (http://scripts.sil.org/OFL)
Applies to all font files
Code License: MIT (http://choosealicense.com/licenses/mit/)
Applies to all other files
</metadata>
<defs>
<font id="octicons" horiz-adv-x="1024" >
<font-face font-family="octicons" font-weight="400" font-stretch="normal" units-per-em="1024" ascent="832" descent="-192" />
<missing-glyph d="M512 832C229.25 832 0 602.75 0 320c0-226.25 146.688-418.125 350.156-485.812 25.594-4.688 34.938 11.125 34.938 24.625 0 12.188-0.469 52.562-0.719 95.312C242-76.81200000000001 211.906 14.5 211.906 14.5c-23.312 59.125-56.844 74.875-56.844 74.875-46.531 31.75 3.53 31.125 3.53 31.125 51.406-3.562 78.47-52.75 78.47-52.75 45.688-78.25 119.875-55.625 149-42.5 4.654 33 17.904 55.625 32.5 68.375C304.906 106.56200000000001 185.344 150.5 185.344 346.688c0 55.938 19.969 101.562 52.656 137.406-5.219 13-22.844 65.094 5.062 135.562 0 0 42.938 13.75 140.812-52.5 40.812 11.406 84.594 17.031 128.125 17.219 43.5-0.188 87.312-5.875 128.188-17.281 97.688 66.312 140.688 52.5 140.688 52.5 28-70.531 10.375-122.562 5.125-135.5 32.812-35.844 52.625-81.469 52.625-137.406 0-196.688-119.75-240-233.812-252.688 18.438-15.875 34.75-47 34.75-94.75 0-68.438-0.688-123.625-0.688-140.5 0-13.625 9.312-29.562 35.25-24.562C877.438-98 1024 93.875 1024 320 1024 602.75 794.75 832 512 832z" horiz-adv-x="1024" />
<glyph glyph-name="alert" unicode="&#xf02d;" d="M1005.854 31.753000000000043l-438.286 767C556.173 818.694 534.967 831 512 831s-44.173-12.306-55.567-32.247l-438.286-767c-11.319-19.809-11.238-44.144 0.213-63.876C29.811-51.85500000000002 50.899-64 73.714-64h876.572c22.814 0 43.903 12.145 55.354 31.877S1017.173 11.94399999999996 1005.854 31.753000000000043zM576 64H448V192h128V64zM576 256H448V512h128V256z" horiz-adv-x="1024" />
<glyph glyph-name="arrow-down" unicode="&#xf03f;" d="M448 384V640H192v-256H0l320-384 320 384H448z" horiz-adv-x="640" />
<glyph glyph-name="arrow-left" unicode="&#xf040;" d="M384 448V640L0 320l384-320V192h256V448H384z" horiz-adv-x="640" />
<glyph glyph-name="arrow-right" unicode="&#xf03e;" d="M640 320L256 640v-192H0v-256h256v-192L640 320z" horiz-adv-x="640" />
<glyph glyph-name="arrow-small-down" unicode="&#xf0a0;" d="M256 384V512H128v-128H0l192-256 192 256H256z" horiz-adv-x="384" />
<glyph glyph-name="arrow-small-left" unicode="&#xf0a1;" d="M256 384V512L0 320l256-192V256h128V384H256z" horiz-adv-x="384" />
<glyph glyph-name="arrow-small-right" unicode="&#xf071;" d="M384 320L128 512v-128H0v-128h128v-128L384 320z" horiz-adv-x="384" />
<glyph glyph-name="arrow-small-up" unicode="&#xf09f;" d="M192 512L0 256h128v-128h128V256h128L192 512z" horiz-adv-x="384" />
<glyph glyph-name="arrow-up" unicode="&#xf03d;" d="M320 640L0 256h192v-256h256V256h192L320 640z" horiz-adv-x="640" />
<glyph glyph-name="beaker" unicode="&#xf0dd;" d="M920-102L704 384V640h64v64H192v-64h64v-256L40-102c-19-42 12-90 58-90h764c46 0 77 48 58 90zM240 192l80 192V640h320v-256l80-192H240z m272 128h64v-64h-64v64z m-64 64h-64v64h64v-64z m0 192h64v-64h-64v64z m0 192h-64V832h64v-64z" horiz-adv-x="1024" />
<glyph glyph-name="bell" unicode="&#xf0de;" d="M896 64v-64H0v64l47 37c49 49 52 163 76 283 49 241 261 320 261 320 0 35 29 64 64 64s64-29 64-64c0 0 217-79 266-320 24-120 27-234 76-283l42-37z m-448-256c71 0 128 57 128 128H320c0-71 57-128 128-128z" horiz-adv-x="896" />
<glyph glyph-name="bold" unicode="&#xf0e2;" d="M0 704h245c159 0 275-48 275-189 0-73-40-143-107-167v-4c85-19 147-79 147-183 0-153-126-225-295-225H0V704z m234-317c107 0 152 42 152 108 0 75-50 103-150 103H136v-211h98z m17-345c113 0 176 41 176 127 0 81-61 116-176 116H136v-243h115z" horiz-adv-x="640" />
<glyph glyph-name="book" unicode="&#xf007;" d="M128 512h256v-64H128v64z m0-192h256v64H128v-64z m0-128h256v64H128v-64z m704 320H576v-64h256v64z m0-128H576v-64h256v64z m0-128H576v-64h256v64z m128 384v-576c0-35-29-64-64-64H544l-64-64-64 64H64c-35 0-64 29-64 64V640c0 35 29 64 64 64h352l64-64 64 64h352c35 0 64-29 64-64z m-512-32l-32 32H64v-576h384V608z m448 32H544l-32-32v-544h384V640z" horiz-adv-x="1024" />
<glyph glyph-name="bookmark" unicode="&#xf07b;" d="M576 832H64C17 832 0 815 0 768v-960l320 198 320-198V768c0 47-17 64-64 64z m-50-272l-119-87 46-138c4-14-1-18-13-11l-120 86-120-86c-12-7-16-3-13 11l46 138-119 87c-11 10-9 15 6 15l147 2 45 138h16l45-138 147-2c15 0 17-5 6-15z" horiz-adv-x="640" />
<glyph glyph-name="briefcase" unicode="&#xf0d3;" d="M576 576v64c0 35-29 64-64 64H384c-35 0-64-29-64-64v-64H64c-35 0-64-29-64-64v-512c0-35 29-64 64-64h768c35 0 64 29 64 64V512c0 35-29 64-64 64H576z m-192 64h128v-64H384v64z m448-384H512v-64H384v64H64V512h64v-192h640V512h64v-256z" horiz-adv-x="896" />
<glyph glyph-name="broadcast" unicode="&#xf048;" d="M576 256h-64c35 0 64 29 64 64v64c0 35-29 64-64 64h-64c-35 0-64-29-64-64v-64c0-35 29-64 64-64h-64c-35 0-64-29-64-64v-128h64v-192c0-35 29-64 64-64h64c35 0 64 29 64 64V64h64V192c0 35-29 64-64 64zM448 384h64v-64h-64v64z m128-256h-64v-256h-64V128h-64v64h192v-64z m134 224c0 127-103 230-230 230S250 479 250 352c0-18 2-35 6-52v-127c-39 49-64 111-64 179 0 159 129 288 288 288s288-129 288-288c0-68-25-130-64-179V300c4 17 6 34 6 52z m250 0c0-184-104-344-256-424v67c119 74 198 206 198 357 0 233-189 422-422 422S58 585 58 352c0-151 79-283 198-357v-67C104 8 0 168 0 352 0 617 215 832 480 832s480-215 480-480z" horiz-adv-x="1024" />
<glyph glyph-name="browser" unicode="&#xf0c5;" d="M320 640h64v-64h-64V640zM192 640h64v-64h-64V640zM64 640h64v-64H64V640zM832 0H64V512h768V0zM832 576H448v64h384V576zM896 640c0 35.35-28.65 64-64 64H64c-35.35 0-64-28.65-64-64v-640c0-35.35 28.65-64 64-64h768c35.35 0 64 28.65 64 64V640z" horiz-adv-x="896" />
<glyph glyph-name="bug" unicode="&#xf091;" d="M704 192h192v64H704v64l203 66-22 60-181-62v64c0 35-29 64-64 64v64c0 31-23 56-53 62l66 66h115V768H627L499 640h-38L333 768H192v-64h115l66-66c-30-6-53-31-53-62v-64c-35 0-64-29-64-64v-64L75 446l-22-60 203-66v-64H64v-64h192v-64L53 62l22-60 181 62v-64c0-35 29-64 64-64h64l64 64V448h64v-448l64-64h64c35 0 64 29 64 64v64l181-62 22 60-203 66v64zM576 512H384v64h192v-64z" horiz-adv-x="1024" />
<glyph glyph-name="calendar" unicode="&#xf068;" d="M768 704h-64v-96c0-18-14-32-32-32H544c-18 0-32 14-32 32v96H320v-96c0-18-14-32-32-32H160c-18 0-32 14-32 32v96H64c-35 0-64-29-64-64v-704c0-35 29-64 64-64h704c35 0 64 29 64 64V640c0 35-29 64-64 64z m0-768H64V512h704v-576zM256 640h-64V768h64v-128z m384 0h-64V768h64v-128zM320 384h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64zM192 256h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64zM192 128h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64zM192 0h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64z m128 0h-64v64h64v-64z" horiz-adv-x="896" />
<glyph glyph-name="check" unicode="&#xf03a;" d="M768 512L256 0 0 256l96 96 160-160 416 416 96-96z" horiz-adv-x="768" />
<glyph glyph-name="checklist" unicode="&#xf076;" d="M1024 288L640-96 448 96l96 96 96-96 288 288 96-96zM365 51l51-51H128c-35 0-64 29-64 64V640c0 35 29 64 64 64h448c35 0 64-29 64-64v-416l-51 51c-25 25-66 25-91 0L365 141c-25-25-25-65 0-90zM256 576h320v64H256v-64z m0-128h320v64H256v-64z m0-128h192v64H256v-64z m-64-64h-64v-64h64v64z m0 128h-64v-64h64v64z m0 128h-64v-64h64v64z m0 128h-64v-64h64v64z" horiz-adv-x="1024" />
<glyph glyph-name="chevron-down" unicode="&#xf0a3;" d="M320 128L0 448l96 96 224-240 224 240 96-96-320-320z" horiz-adv-x="640" />
<glyph glyph-name="chevron-left" unicode="&#xf0a4;" d="M352 640l96-96-240-224 240-224-96-96L32 320l320 320z" horiz-adv-x="512" />
<glyph glyph-name="chevron-right" unicode="&#xf078;" d="M480 320L160 0l-96 96 240 224L64 544l96 96 320-320z" horiz-adv-x="512" />
<glyph glyph-name="chevron-up" unicode="&#xf0a2;" d="M640 256l-96-96-224 240L96 160 0 256l320 320 320-320z" horiz-adv-x="640" />
<glyph glyph-name="circle-slash" unicode="&#xf084;" d="M448 768C201 768 0 567 0 320s201-448 448-448 448 201 448 448S695 768 448 768z m0-83c83 0 160-28 222-75L158 98c-47 62-75 139-75 222 0 201 164 365 365 365z m0-730c-83 0-160 28-222 75l512 512c47-62 75-139 75-222 0-201-164-365-365-365z" horiz-adv-x="896" />
<glyph glyph-name="circuit-board" unicode="&#xf0d6;" d="M192 512c0 35 29 64 64 64s64-29 64-64-29-64-64-64-64 29-64 64z m512 0c0 35-29 64-64 64s-64-29-64-64 29-64 64-64 64 29 64 64z m0-384c0 35-29 64-64 64s-64-29-64-64 29-64 64-64 64 29 64 64zM832 768H320v-139c23-12 41-30 53-53h150c27 50 85 82 150 67 48-12 87-51 98-99 20-88-46-166-131-166-51 0-95 28-117 70H373c-27-51-85-82-150-66-47 11-86 50-97 97-16 65 15 123 66 150V768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64l320 320h139c27 50 85 82 150 67 48-12 87-51 98-99 20-88-46-166-131-166-51 0-95 28-117 70h-75L256-128h576c35 0 64 29 64 64V704c0 35-29 64-64 64z" horiz-adv-x="896" />
<glyph glyph-name="clippy" unicode="&#xf035;" d="M128 64h256v-64H128v64z m320 384H128v-64h320v64z m128-192V384L384 192l192-192V128h320V256H576z m-288 64H128v-64h160v64zM128 128h160v64H128v-64z m576-64h64v-128c-1-18-7-33-19-45s-27-18-45-19H64c-35 0-64 29-64 64V640c0 35 29 64 64 64h192C256 775 313 832 384 832s128-57 128-128h192c35 0 64-29 64-64v-320h-64V512H64v-576h640V64zM128 576h512c0 35-29 64-64 64h-64c-35 0-64 29-64 64s-29 64-64 64-64-29-64-64-29-64-64-64h-64c-35 0-64-29-64-64z" horiz-adv-x="896" />
<glyph glyph-name="clock" unicode="&#xf046;" d="M512 320h192v-128H448c-35 0-64 29-64 64V576h128v-256z m-64 365c201 0 365-164 365-365S649-45 448-45 83 119 83 320s164 365 365 365m0 83C201 768 0 567 0 320s201-448 448-448 448 201 448 448S695 768 448 768z" horiz-adv-x="896" />
<glyph glyph-name="cloud-download" unicode="&#xf00b;" d="M576 0h128l-192-192-192 192h128V320h128v-320z m192 512c0 28-58 192-288 192-155 0-288-123-288-256C65 448 0 351 0 256c0-98 64-192 192-192 28 0 170 0 192 0v83H192C88 147 83 238 83 256c0 11 3 109 109 109h83v83c0 89 100 173 205 173 163 0 200-99 205-115v-77h83c52 0 173-14 173-141 0-134-144-141-173-141H640v-83c24 0 127 0 128 0 133 0 256 74 256 224 0 156-123 224-256 224z" horiz-adv-x="1024" />
<glyph glyph-name="cloud-upload" unicode="&#xf00c;" d="M448 256H320l192 192 192-192H576v-320H448V256z m320 256c0 28-58 192-288 192-155 0-288-123-288-256C65 448 0 351 0 256c0-98 64-192 192-192 28 0 170 0 192 0v83H192C88 147 83 238 83 256c0 11 3 109 109 109h83v83c0 89 100 173 205 173 163 0 200-99 205-115v-77h83c52 0 173-14 173-141 0-134-144-141-173-141H640v-83c24 0 127 0 128 0 133 0 256 74 256 224 0 156-123 224-256 224z" horiz-adv-x="1024" />
<glyph glyph-name="code" unicode="&#xf05f;" d="M608 640l-96-96 224-224L512 96l96-96 288 320L608 640zM288 640L0 320l288-320 96 96L160 320l224 224L288 640z" horiz-adv-x="896" />
<glyph glyph-name="comment" unicode="&#xf02b;" d="M832 704H64c-35 0-64-29-64-64v-512c0-35 29-64 64-64h128v-224l224 224h416c35 0 64 29 64 64V640c0 35-29 64-64 64z m0-576H384L256 0V128H64V640h768v-512z" horiz-adv-x="896" />
<glyph glyph-name="comment-discussion" unicode="&#xf04f;" d="M960 704H384c-35 0-64-29-64-64v-128H64c-35 0-64-29-64-64v-384c0-35 29-64 64-64h64v-192l192 192h256c35 0 64 29 64 64V192h64l192-192V192h64c35 0 64 29 64 64V640c0 35-29 64-64 64zM576 64H288l-96-96v96H64V448h256v-192c0-35 29-64 64-64h192v-128z m384 192H832v-96l-96 96H384V640h576v-384z" horiz-adv-x="1024" />
<glyph glyph-name="credit-card" unicode="&#xf045;" d="M768 256H128v64h640v-64z m256 384v-576c0-35-29-64-64-64H64c-35 0-64 29-64 64V640c0 35 29 64 64 64h896c35 0 64-29 64-64z m-64-192H64v-384h896V448z m0 192H64v-64h896v64zM384 192H128v-64h256v64z" horiz-adv-x="1024" />
<glyph glyph-name="dash" unicode="&#xf0ca;" d="M0 384v-128h512V384H0z" horiz-adv-x="512" />
<glyph glyph-name="dashboard" unicode="&#xf07d;" d="M512 512h-64v64h64v-64z m256-192h-64v-64h64v64zM320 512h-64v-64h64v64z m-64-192h-64v-64h64v64z m704 352l-32 32-416-320c-4 1-64 0-64 0-35 0-64-29-64-64v-64c0-35 29-64 64-64h64c35 0 64 29 64 64v59l384 357zM858 410c12-39 19-80 19-122 0-219-178-397-397-397S83 69 83 288s178 397 397 397c77 0 148-22 209-60l60 60c-76 52-169 83-269 83C215 768 0 553 0 288s215-480 480-480 480 215 480 480c0 66-13 129-38 186l-64-64z" horiz-adv-x="1024" />
<glyph glyph-name="database" unicode="&#xf096;" d="M384-128C171.969-128 0-70.625 0 0c0 38.625 0 80.875 0 128 0 11.125 5.562 21.688 13.562 32C56.375 104.875 205.25 64 384 64s327.625 40.875 370.438 96c8-10.312 13.562-20.875 13.562-32 0-37.062 0-76.375 0-128C768-70.625 596-128 384-128zM384 128C171.969 128 0 185.375 0 256c0 38.656 0 80.844 0 128 0 6.781 2.562 13.375 6 19.906l0 0C7.938 408 10.5 412.031 13.562 416 56.375 360.906 205.25 320 384 320s327.625 40.906 370.438 96c3.062-3.969 5.625-8 7.562-12.094l0 0c3.438-6.531 6-13.125 6-19.906 0-37.062 0-76.344 0-128C768 185.375 596 128 384 128zM384 384C171.969 384 0 441.344 0 512c0 20.219 0 41.594 0 64 0 20.344 0 41.469 0 64C0 710.656 171.969 768 384 768c212 0 384-57.344 384-128 0-19.969 0-41.156 0-64 0-19.594 0-40.25 0-64C768 441.344 596 384 384 384zM384 704c-141.375 0-256-28.594-256-64s114.625-64 256-64 256 28.594 256 64S525.375 704 384 704z" horiz-adv-x="768" />
<glyph glyph-name="desktop-download" unicode="&#xf0dc;" d="M256 448h192V832h128v-384h192L512 192 256 448z m704 256H704v-64h256v-512H64V640h256v64H64c-35 0-64-29-64-64v-576c0-35 29-64 64-64h342c-16-39-55-89-150-128h512c-95 39-134 89-150 128h342c35 0 64 29 64 64V640c0 35-29 64-64 64z" horiz-adv-x="1024" />
<glyph glyph-name="device-camera" unicode="&#xf056;" d="M960 640H448c0 35-29 64-64 64H128c-35 0-64-29-64-64-35 0-64-29-64-64v-576c0-35 29-64 64-64h896c35 0 64 29 64 64V576c0 35-29 64-64 64zM384 512H128v64h256v-64z m288-448c-124 0-224 100-224 224s100 224 224 224 224-100 224-224-100-224-224-224z m160 224c0-88-72-160-160-160s-160 72-160 160 72 160 160 160 160-72 160-160z" horiz-adv-x="1024" />
<glyph glyph-name="device-camera-video" unicode="&#xf057;" d="M973 634L640 402V576c0 35-29 64-64 64H64c-35 0-64-29-64-64v-576c0-35 29-64 64-64h512c35 0 64 29 64 64V174l333-232c21-15 51 0 51 26V608c0 26-30 41-51 26z" horiz-adv-x="1024" />
<glyph glyph-name="device-desktop" unicode="&#xf27c;" d="M960 704H64c-35 0-64-29-64-64v-576c0-35 29-64 64-64h342c-16-39-55-89-150-128h512c-95 39-134 89-150 128h342c35 0 64 29 64 64V640c0 35-29 64-64 64z m0-576H64V640h896v-512z" horiz-adv-x="1024" />
<glyph glyph-name="device-mobile" unicode="&#xf038;" d="M576 832H64C29 832 0 803 0 768v-896c0-35 29-64 64-64h512c35 0 64 29 64 64V768c0 35-29 64-64 64zM320-147c-46 0-83 37-83 83s37 83 83 83 83-37 83-83-37-83-83-83z m256 211H64V704h512v-640z" horiz-adv-x="640" />
<glyph glyph-name="diff" unicode="&#xf04d;" d="M384 384h128v-64H384v-128h-64V320H192v64h128V512h64v-128zM192 0h320v64H192v-64z m288 704l224-224v-608c0-35-29-64-64-64H64c-35 0-64 29-64 64V640c0 35 29 64 64 64h416z m160-256L448 640H64v-768h576V448zM544 832S192 832 192 832v-64h320l256-256v-512h64V544L544 832z" horiz-adv-x="896" />
<glyph glyph-name="diff-added" unicode="&#xf06b;" d="M832 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h768c35 0 64 29 64 64V704c0 35-29 64-64 64z m0-832H64V704h768v-768zM384 256H192V384h192V576h128v-192h192v-128H512v-192H384V256z" horiz-adv-x="896" />
<glyph glyph-name="diff-ignored" unicode="&#xf099;" d="M832 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h768c35 0 64 29 64 64V704c0 35-29 64-64 64z m0-832H64V704h768v-768zM288 64h-96v96l416 416h96v-96L288 64z" horiz-adv-x="896" />
<glyph glyph-name="diff-modified" unicode="&#xf06d;" d="M832 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h768c35 0 64 29 64 64V704c0 35-29 64-64 64z m0-832H64V704h768v-768zM256 320c0 106 86 192 192 192s192-86 192-192-86-192-192-192-192 86-192 192z" horiz-adv-x="896" />
<glyph glyph-name="diff-removed" unicode="&#xf06c;" d="M832 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h768c35 0 64 29 64 64V704c0 35-29 64-64 64z m0-832H64V704h768v-768zM704 256H192V384h512v-128z" horiz-adv-x="896" />
<glyph glyph-name="diff-renamed" unicode="&#xf06e;" d="M384 256H192V384h192V576l320-256-320-256V256z m512 448v-768c0-35-29-64-64-64H64c-35 0-64 29-64 64V704c0 35 29 64 64 64h768c35 0 64-29 64-64z m-64 0H64v-768h768V704z" horiz-adv-x="896" />
<glyph glyph-name="ellipsis" unicode="&#xf09a;" d="M704 512H64c-35 0-64-29-64-64v-256c0-35 29-64 64-64h640c35 0 64 29 64 64V448c0 35-29 64-64 64zM256 256H128V384h128v-128z m192 0H320V384h128v-128z m192 0H512V384h128v-128z" horiz-adv-x="768" />
<glyph glyph-name="eye" unicode="&#xf04e;" d="M516 704C192 704 0 320 0 320s192-384 516-384c316 0 508 384 508 384S832 704 516 704z m-4-640c-141 0-256 114-256 256 0 141 115 256 256 256 142 0 256-115 256-256 0-142-114-256-256-256z m128 256c0-71-57-128-128-128s-128 57-128 128 57 128 128 128 128-57 128-128z" horiz-adv-x="1024" />
<glyph glyph-name="file-binary" unicode="&#xf094;" d="M256 64h64v-64H128v64h64V192h-64v64h128v-192z m512 480v-608c0-35-29-64-64-64H64c-35 0-64 29-64 64V704c0 35 29 64 64 64h480l224-224z m-64-32L512 704H64v-768h640V512z m-192 64H384v-64h64v-128h-64v-64h192v64h-64V576z m-384 0h192v-256H128V576z m64-192h64V512h-64v-128z m192-128h192v-256H384V256z m64-192h64V192h-64v-128z" horiz-adv-x="768" />
<glyph glyph-name="file-code" unicode="&#xf010;" d="M544 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h640c35 0 64 29 64 64V544L544 768z m160-832H64V704h448l192-192v-576zM320 385l-96-97 96-96-32-64-160 160 160 160 32-63z m160 63l160-160-160-160-32 63 96 97-96 96 32 64z" horiz-adv-x="768" />
<glyph glyph-name="file-directory" unicode="&#xf016;" d="M832 576H448v64c0 42-20 64-64 64H64c-35 0-64-29-64-64v-640c0-35 29-64 64-64h768c35 0 64 29 64 64V512c0 35-29 64-64 64z m-448 0H64v64h320v-64z" horiz-adv-x="896" />
<glyph glyph-name="file-media" unicode="&#xf012;" d="M384 512h128v-128H384V512z m384 32v-608c0-35-29-64-64-64H64c-35 0-64 29-64 64V704c0 35 29 64 64 64h480l224-224z m-64-32L512 704H64v-704l192 320 128-256 128 128 192-192V512z" horiz-adv-x="768" />
<glyph glyph-name="file-pdf" unicode="&#xf014;" d="M544 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h640c35 0 64 29 64 64V544L544 768zM64 704h256c-7-2-13-6-20-13-6-6-11-16-15-30-7-25-9-57-6-94s11-75 22-115c-15-47-39-103-71-170s-51-106-58-118c-9-3-23-9-44-19-21-9-42-23-64-41V704z m283-307c29-72 54-117 75-134s41-29 60-34c-41-6-79-13-116-21-36-8-75-21-116-38 1 1 14 28 39 80s45 101 58 147z m357-461H96c-4 0-8 1-11 2 13 4 29 13 47 28 29 24 67 74 114 152 20 8 37 15 52 20l27 9c29 8 60 15 92 21 32 5 64 10 95 13 29-14 58-25 89-34 31-8 58-13 79-15 9 0 17 1 24 2v-198z m0 311c-12 7-26 13-41 18-15 4-31 6-48 7-25 0-51-2-79-5-15 4-36 18-63 41s-55 73-84 149c8 53 12 95 13 126s1 47 0 48c3 26-2 45-13 56s-24 17-39 17h162l192-192v-265z" horiz-adv-x="768" />
<glyph glyph-name="file-submodule" unicode="&#xf017;" d="M640 384H256v-448h576c35 0 64 29 64 64V320H640v64z m-64-128H320v64h256v-64z m256 320H448v64c0 42-20 64-64 64H64c-35 0-64-29-64-64v-640c0-35 29-64 64-64h128V384c0 35 29 64 64 64h384c35 0 64-29 64-64h192V512c0 35-29 64-64 64z m-448 0H64v64h320v-64z" horiz-adv-x="896" />
<glyph glyph-name="file-symlink-directory" unicode="&#xf0b1;" d="M832 576H448v64c0 42-20 64-64 64H64c-35 0-64-29-64-64v-640c0-35 29-64 64-64h768c35 0 64 29 64 64V512c0 35-29 64-64 64zM64 640h320v-64H64v64z m384-576V192c-63 1-118-14-163-45s-76-80-93-147c1 105 25 184 72 239 47 54 108 81 184 81V448l256-192-256-192z" horiz-adv-x="896" />
<glyph glyph-name="file-symlink-file" unicode="&#xf0b0;" d="M544 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h640c35 0 64 29 64 64V544L544 768z m160-832H64V704h448l192-192v-576zM384 544l256-192-256-192V288c-63 1-118-14-163-45s-76-80-93-147c1 105 25 184 72 239 47 54 108 81 184 81V544z" horiz-adv-x="768" />
<glyph glyph-name="file-text" unicode="&#xf011;" d="M384 512H128v64h256v-64zM128 320h448v64H128v-64z m0-128h448v64H128v-64z m0-128h448v64H128v-64z m640 480v-608c0-35-29-64-64-64H64c-35 0-64 29-64 64V704c0 35 29 64 64 64h480l224-224z m-64-32L512 704H64v-768h640V512z" horiz-adv-x="768" />
<glyph glyph-name="file-zip" unicode="&#xf013;" d="M544 768H64C29 768 0 739 0 704v-768c0-35 29-64 64-64h640c35 0 64 29 64 64V544L544 768z m160-832H64V704h192v-64h64v64h192l192-192v-576zM320 576v64h64v-64h-64z m-64 0h64v-64h-64v64z m64-128v64h64v-64h-64z m-64 0h64v-64h-64v64z m64-128v64h64v-64h-64z m-64-82c-38-22-64-63-64-110v-64h256v64c0 71-57 128-128 128v64h-64v-82z m128-46v-64H256v64h128z" horiz-adv-x="768" />
<glyph glyph-name="flame" unicode="&#xf0d2;" d="M323 812c52-139 26-216-33-276-63-67-163-117-232-215-93-131-109-418 226-493-141 74-171 289-19 423-39-130 34-213 124-183 89 30 147-34 145-107-1-50-20-92-72-116 219 38 306 219 306 356 0 182-162 206-80 359-97-8-130-72-121-176 6-69-65-115-119-85-43 26-42 76-4 114 80 79 112 262-120 398l-1 1z" horiz-adv-x="768" />
<glyph glyph-name="fold" unicode="&#xf0cc;" d="M448 256l192-192H512v-192H384V64H256l192 192z m192 384H512V832H384v-192H256l192-192 192 192z m256-128c0 35-29 64-64 64H672l-64-64h192L672 384H224L96 512h192l-64 64H64c-35 0-64-29-64-64l160-160L0 192c0-35 29-64 64-64h160l64 64H96l128 128h448l128-128H608l64-64h160c35 0 64 29 64 64L736 352l160 160z" horiz-adv-x="896" />
<glyph glyph-name="gear" unicode="&#xf02f;" d="M896 271V373l-124 41-29 70 56 118-72 72-116-58-70 29-44 123H395l-40-124-71-29-118 56-72-72 58-116-29-70L0 369v-102l124-41 29-70-56-118 72-72 116 58 70-29 44-123h102l40 124 71 29 118-56 72 72-59 116 30 70 123 44zM448 128c-106 0-192 86-192 192s86 192 192 192 192-86 192-192-86-192-192-192z" horiz-adv-x="896" />
<glyph glyph-name="gift" unicode="&#xf042;" d="M832 576h-88c12 21 21 43 23 58 4 43-7 78-33 103-23 24-52 31-87 31-3 0-5 0-7 0-34-1-71-16-98-37s-47-46-62-77c-15 31-35 56-62 77s-64 37-98 37c-1 0-2 0-2 0-36 0-68-6-92-31-26-25-37-60-33-103 2-15 11-37 23-58h-88c-35 0-64-29-64-64v-192h64v-320c0-35 29-64 64-64h576c35 0 64 29 64 64V320h64V512c0 35-29 64-64 64z m-306 56c11 23 27 43 48 59 19 15 46 25 67 26h6c29 0 42-7 51-16s21-25 19-61c-3-12-16-39-32-64H500l26 56z m-264 69c8 8 20 16 58 16 20 0 46-11 66-26 21-16 37-35 48-59l27-56H275c-16 25-29 52-32 64-2 36 10 52 19 61z m186-701H192V320h256v-320z m0 384H128V512h320v-128z m320-384H512V320h256v-320z m64 384H512V512h320v-128z" horiz-adv-x="896" />
<glyph glyph-name="gist" unicode="&#xf00e;" d="M480 512l160-160-160-160-48 48 112 112-112 112 48 48z m-192 0L128 352l160-160 48 48-112 112 112 112-48 48zM0 0V704c0 35 29 64 64 64h640c35 0 64-29 64-64v-704c0-35-29-64-64-64H64c-35 0-64 29-64 64z m64 0h640V704H64v-704z" horiz-adv-x="768" />
<glyph glyph-name="gist-secret" unicode="&#xf08c;" d="M512 160l64-224H320l64 224-48 96h224l-48-96z m128 288H256l-128-64h640l-128 64z m-64 256l-128-64-128 64-64-192h384l-64 192z m258-496l-194 48 64-128-128-192h206c29 0 55 20 62 48l36 146c9 34-12 69-46 78z m-578 48L62 208c-34-9-55-44-46-78l36-146c7-28 33-48 62-48h206L192 128l64 128z" horiz-adv-x="896" />
<glyph glyph-name="git-branch" unicode="&#xf020;" d="M640 512c0 71-57 128-128 128s-128-57-128-128c0-47 26-88 64-110v-19c-1-33-15-63-40-88s-55-39-88-40c-53-1-95-10-128-29V530c38 22 64 63 64 110 0 71-57 128-128 128S0 711 0 640c0-47 26-88 64-110v-420C26 88 0 47 0 0c0-71 57-128 128-128s128 57 128 128c0 34-13 64-34 87 6 4 31 26 38 30 16 7 36 11 60 11 67 3 125 29 176 80s77 127 80 193h-1c39 23 65 64 65 111zM128 717c42 0 77-35 77-77s-35-77-77-77-77 35-77 77 35 77 77 77z m0-794c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z m384 512c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z" horiz-adv-x="640" />
<glyph glyph-name="git-commit" unicode="&#xf01f;" d="M695 384c-29 110-128 192-247 192s-218-82-247-192H0v-128h201c29-110 128-192 247-192s218 82 247 192h201V384H695zM448 179c-78 0-141 63-141 141s63 141 141 141 141-63 141-141-63-141-141-141z" horiz-adv-x="896" />
<glyph glyph-name="git-compare" unicode="&#xf0ac;" d="M320 64h-64c-17 1-31 7-44 20s-19 27-20 44V530c38 22 64 63 64 110 0 71-57 128-128 128S0 711 0 640c0-47 26-88 64-110 0-111 0-402 0-402 2-50 22-94 60-132s82-58 132-60c0 0 65 0 64 0v-128l192 192-192 192v-128zM128 717c42 0 77-35 77-77s-35-77-77-77-77 35-77 77 35 77 77 77z m704-607c0 111 0 402 0 402-2 50-22 94-60 132s-82 58-132 60c0 0-65 0-64 0V832L384 640l192-192V576h64c17-1 31-7 44-20s19-27 20-44v-402c-38-22-64-63-64-110 0-71 57-128 128-128s128 57 128 128c0 47-26 88-64 110z m-64-187c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z" horiz-adv-x="896" />
<glyph glyph-name="git-merge" unicode="&#xf023;" d="M640 384c-47 0-88-26-111-65v1c-67 1-145 23-200 65-48 37-96 103-121 156 29 23 48 59 48 99 0 71-57 128-128 128S0 711 0 640c0-47 26-88 64-110v-420C26 88 0 47 0 0c0-71 57-128 128-128s128 57 128 128c0 47-26 88-64 110V341c43-45 92-81 147-108s130-40 190-41v1c23-39 64-65 111-65 71 0 128 57 128 128s-57 128-128 128zM205 0c0-42-35-77-77-77s-77 35-77 77 35 77 77 77 77-35 77-77z m-77 563c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z m512-384c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z" horiz-adv-x="768" />
<glyph glyph-name="git-pull-request" unicode="&#xf009;" d="M704 110c0 111 0 402 0 402-2 50-22 94-60 132s-82 58-132 60c0 0-65 0-64 0V832L256 640l192-192V576h64c17-1 31-7 44-20s19-27 20-44v-402c-38-22-64-63-64-110 0-71 57-128 128-128s128 57 128 128c0 47-26 88-64 110z m-64-187c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77zM256 640c0 71-57 128-128 128S0 711 0 640c0-47 26-88 64-110 0-99 0-356 0-420-38-22-64-63-64-110 0-71 57-128 128-128s128 57 128 128c0 47-26 88-64 110V530c38 22 64 63 64 110z m-51-640c0-42-35-77-77-77s-77 35-77 77 35 77 77 77 77-35 77-77z m-77 563c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z" horiz-adv-x="768" />
<glyph glyph-name="globe" unicode="&#xf0b6;" d="M448 768C201 768 0 567 0 320s201-448 448-448c31 0 60 3 88 9-11 5-13 47-1 70 12 26 52 93 13 115s-28 32-52 58-14 30-16 37c-5 22 23 57 25 60 1 4 1 17 0 21 0 5-17 14-22 15-4 0-7-7-13-8s-32 16-38 21-9 15-17 22c-8 8-9 2-21 7s-51 20-82 31c-31 12-33 30-33 42-1 13-19 30-27 43-9 13-10 30-13 26s16-50 13-52c-3-1-10 13-19 24-9 12 9 6-19 61s9 83 11 112 24-11 12 8 0 57-9 71c-8 14-56-16-56-16 1 14 44 37 74 59s50 4 74-3c25-8 26-6 18 3-8 8 4 11 23 8 18-3 24-26 53-23 30 2 3-6 7-14s-4-7-24-19c-19-13 1-14 35-39s24 16 20 35 25 4 25 4c21-14 17-1 32-5s58-41 58-41c-53-28-20-31-11-38s-18-19-18-19c-11 11-12-1-19-5s-1-14-1-14c-36-6-28-44-27-53 0-9-24-23-30-37-6-13 16-41 4-42-12-2-22 42-84 26-19-5-60-26-38-69 23-44 59 12 71 6s-4-34-1-35 34-1 36-39 49-34 59-35c11 0 45 28 49 29 4 2 24 18 66-6 42-23 63-20 77-30s5-30 18-37 68 2 82-20-56-134-78-146-31-41-54-59-52-41-81-58c-26-15-30-42-42-51 201 45 351 224 351 438 0 247-201 448-448 448z m105-420c-6-2-18-14-50 5-31 19-52 15-55 18 0 0-3 7 11 9 28 3 63-26 71-26s12 8 26 3 3-8-3-9zM406 723c-3 2 2 5 6 9 2 2 1 7 3 9 7 7 39 16 33-2-7-17-37-19-42-16z m79-57c-12 1-37 3-33 9 19 18-6 24-22 24-16 1-22 10-14 12s39-1 45-5c5-4 33-16 35-24 1-8 0-16-11-16z m94 3c-9-6-53 26-61 33-36 31-57 20-64 26s-5 12 7 22 44-4 64-6c19-2 42-17 42-35 1-16 21-32 12-40z" horiz-adv-x="896" />
<glyph glyph-name="graph" unicode="&#xf043;" d="M1024-64v-64H0V832h64v-896h960z m-704 64H192V320h128v-320z m256 0H448V640h128v-640z m256 0H704V448h128v-448z" horiz-adv-x="1024" />
<glyph glyph-name="heart" unicode="&#x2665;" d="M717 576c-33 40-80 61-141 64-62 0-108-27-141-64s-50-59-51-64c-1 5-18 27-51 64s-75 64-141 64c-61-3-108-24-141-64-33-39-50-82-51-128 0-33 6-97 43-171s150-188 341-341c191 153 305 267 342 341s42 139 42 171c-1 46-18 89-51 129z" horiz-adv-x="768" />
<glyph glyph-name="history" unicode="&#xf07e;" d="M512 0H384V448h320v-128H512v-320zM448 768c-140 0-264-65-346-166L0 704v-256h256l-96 96c67 85 171 141 288 141 201 0 365-164 365-365S649-45 448-45 83 119 83 320c0 22 2 43 6 64H5c-3-21-5-42-5-64 0-247 201-448 448-448s448 201 448 448S695 768 448 768z" horiz-adv-x="896" />
<glyph glyph-name="home" unicode="&#xf08d;" d="M1024 256L832 448V704H704v-128L512 768 0 256h128l64-320c0-35 29-64 64-64h512c35 0 64 29 64 64l64 320h128zM768-64H576V192H448v-256H256l-76 404 332 332 332-332-76-404z" horiz-adv-x="1024" />
<glyph glyph-name="horizontal-rule" unicode="&#xf070;" d="M64 384h128v-128h64V640h-64v-192H64V640H0v-384h64V384z m576-128V384h-64v-128h64z m0 192V576h-64v-128h64z m-192 0V576h128v64H384v-384h64V384h128v64H448zM0 0h640V128H0v-128z" horiz-adv-x="640" />
<glyph glyph-name="hubot" unicode="&#xf09d;" d="M192 448c-35 0-64-29-64-64v-128c0-35 29-64 64-64h512c35 0 64 29 64 64V384c0 35-29 64-64 64H192z m512-112l-80-80h-96l-80 80-80-80h-96l-80 80v48h48l80-80 80 80h96l80-80 80 80h48v-48zM320 128h256v-64H320v64z m128 576C201 704 0 518 0 288v-288c0-35 29-64 64-64h768c35 0 64 29 64 64V288c0 230-201 416-448 416z m384-704H64V288c0 198 169 358 384 358s384-160 384-358v-288z" horiz-adv-x="896" />
<glyph glyph-name="inbox" unicode="&#xf0cf;" d="M896 256l-72 457c-5 31-32 55-64 55H136c-32 0-59-24-64-55L0 256v-320c0-35 29-64 64-64h768c35 0 64 29 64 64V256z m-210-35l-28-57c-11-22-33-36-58-36H295c-24 0-46 14-57 35l-28 58c-11 21-33 35-57 35H64l64 448h640l64-448h-88c-25 0-47-14-58-35z" horiz-adv-x="896" />
<glyph glyph-name="info" unicode="&#xf059;" d="M403 468c-12 12-18 27-18 45s6 33 18 45 27 18 45 18 33-6 45-18 18-27 18-45-6-33-18-45-27-19-45-19-33 7-45 19z m109-147c-1 16-7 31-20 44-13 12-27 19-44 20h-64c-17-1-31-8-44-20-13-13-19-28-20-44h64v-192c1-17 7-32 20-44 13-13 27-20 44-20h64c17 0 31 7 44 20 13 12 19 27 20 44h-64V321z m-64 364C247 685 83 522 83 321s164-365 365-365 365 163 365 365-164 364-365 364m0 84c247 0 448-201 448-448S695-127 448-127 0 73 0 321 201 769 448 769z" horiz-adv-x="896" />
<glyph glyph-name="issue-closed" unicode="&#xf028;" d="M448 192h128v-128H448V192z m128 384H448v-320h128V576z m96-96l-64-64 160-160 256 288-64 64-192-224-96 96zM512-45c-201 0-365 164-365 365s164 365 365 365c117 0 221-56 288-141l59 59C777 704 652 768 512 768 265 768 64 567 64 320s201-448 448-448 448 201 448 448l-97-97c-42-154-183-268-351-268z" horiz-adv-x="1024" />
<glyph glyph-name="issue-opened" unicode="&#xf026;" d="M448 685c201 0 365-164 365-365S649-45 448-45 83 119 83 320s164 365 365 365m0 83C201 768 0 567 0 320s201-448 448-448 448 201 448 448S695 768 448 768z m64-192H384v-320h128V576z m0-384H384v-128h128V192z" horiz-adv-x="896" />
<glyph glyph-name="issue-reopened" unicode="&#xf027;" d="M512 256H384V576h128v-320zM384 64h128V192H384v-128z m405 128H640l96-96c-67-85-171-141-288-141-201 0-365 164-365 365 0 22 2 43 6 64H5c-3-21-5-42-5-64 0-247 201-448 448-448 140 0 264 65 346 166l102-102V192H789zM107 448h149l-96 96c67 85 171 141 288 141 201 0 365-164 365-365 0-22-2-43-6-64h84c3 21 5 42 5 64 0 247-201 448-448 448-140 0-264-65-346-166L0 704v-256h107z" horiz-adv-x="896" />
<glyph glyph-name="italic" unicode="&#xf0e4;" d="M180 512h127L192-64H64l116 576z m23 173c0 45 37 83 85 83 36 0 72-24 72-66 0-48-38-83-85-83-37 0-72 24-72 66z" horiz-adv-x="384" />
<glyph glyph-name="jersey" unicode="&#xf019;" d="M224 448l-32-32v-320l32-32h128l32 32V416l-32 32H224z m96-320h-64V384h64v-256z m401 464c-14 88-20 168-17 240H513c0-17-8-31-25-44-16-13-40-19-72-19s-56 6-72 19c-15 13-23 27-23 44H128c3-72-2-152-16-240-13-88-51-136-112-144v-576c1-17 7-31 20-44s27-19 44-20h704c17 1 31 7 44 20s19 27 20 44V448c-61 8-98 56-112 144z m47-720H64V384c57 32 95 80 110 144s20 144 18 240h64c-1-50 10-94 33-132 23-37 65-57 128-60 63 1 105 21 128 60 23 38 32 82 31 132h64c1-91 8-163 21-216 13-52 44-128 107-168v-512zM480 448l-32-32v-320l32-32h128l32 32V416l-32 32H480z m96-320h-64V384h64v-256z" horiz-adv-x="896" />
<glyph glyph-name="key" unicode="&#xf049;" d="M821 693c-48 48-108 73-181 75-72-2-133-27-181-75s-72-108-74-181c0-19 2-38 6-57L0 64v-64l64-64h128l64 64v64h64v64h64v64h128l70 71c19-5 38-7 58-7 73 2 133 27 181 75s73 108 75 181c-2 73-27 133-75 181zM704 488c-49 0-88 39-88 88s39 88 88 88 88-39 88-88-39-88-88-88z" horiz-adv-x="896" />
<glyph glyph-name="keyboard" unicode="&#xf00d;" d="M640 512h-64v64h64v-64z m-448-64h-64v-64h64v64z m320 128h-64v-64h64v64z m-256 0H128v-64h128v64z m512-448h128v64H768v-64zM512 384h64v64h-64v-64zM256 192H128v-64h128v64z m512 384h-64v-64h64v64z m128 0h-64v-64h64v64zM768 256h128V448H768v-192z m256 384v-576c0-35-29-64-64-64H64c-35 0-64 29-64 64V640c0 35 29 64 64 64h896c35 0 64-29 64-64z m-64 0H64v-576h896V640zM384 384h64v64h-64v-64z m0 192h-64v-64h64v64zM256 384h64v64h-64v-64z m64-256h384v64H320v-64z m320 256h64v64h-64v-64z m-448-64h-64v-64h64v64z m320 0v-64h64v64h-64z m-128 0v-64h64v64h-64z m-64 0h-64v-64h64v64z m320-64h64v64h-64v-64z" horiz-adv-x="1024" />
<glyph glyph-name="law" unicode="&#xf0d8;" d="M448 576c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z m448-384c0-71-57-128-128-128h-64c-71 0-128 57-128 128l128 256h-64c-35 0-64 29-64 64h-64v-512c27 0 64-29 64-64h64c27 0 64-29 64-64H192c0 35 37 64 64 64h64c0 35 37 64 64 64h2l-2 512h-64c0-35-29-64-64-64h-64l128-256c0-71-57-128-128-128h-64C57 64 0 121 0 192l128 256H64v64h192c0 35 29 64 64 64h256c35 0 64-29 64-64h192v-64h-64l128-256zM160 384L64 192h192l-96 192z m672-192l-96 192-96-192h192z" horiz-adv-x="896" />
<glyph glyph-name="light-bulb" unicode="&#xf000;" d="M352 832C159 832 0 692 0 512c0-59 35-144 64-192 86-144 114-178 128-256v-64h320v64c14 78 42 112 128 256 29 48 64 133 64 192C704 692 545 832 352 832z m233-479c-16-28-30-51-43-71-55-90-80-132-93-207-1-3-1-7-1-11H256c0 4 0 8-1 11-13 75-38 117-93 207-13 20-27 43-43 71-27 45-55 117-55 159C64 653 193 768 352 768c78 0 151-27 206-76 53-48 82-112 82-180 0-42-28-114-55-159zM192-64h320c-15-73-83-128-160-128s-145 55-160 128z" horiz-adv-x="768" />
<glyph glyph-name="link" unicode="&#xf05c;" d="M256 256h64v-64h-64c-96 0-192 108-192 224s99 224 192 224h256c93 0 192-108 192-224 0-90-58-174-128-208v74c37 29 64 81 64 134 0 82-65 160-128 160H256c-63 0-128-78-128-160s64-160 128-160z m576 192h-64v-64h64c64 0 128-78 128-160s-65-160-128-160H576c-63 0-128 78-128 160 0 53 27 105 64 134v74c-70-34-128-118-128-208 0-116 99-224 192-224h256c93 0 192 108 192 224s-96 224-192 224z" horiz-adv-x="1024" />
<glyph glyph-name="link-external" unicode="&#xf07f;" d="M704 192h64v-192c0-35-29-64-64-64H64c-35 0-64 29-64 64V640c0 35 29 64 64 64h192v-64H64v-640h640V192zM384 704l144-144-208-208 96-96 208 208 144-144V704H384z" horiz-adv-x="768" />
<glyph glyph-name="list-ordered" unicode="&#xf062;" d="M768 0c0-38 0-64-38-64H294c-38 0-38 26-38 64s0 64 38 64h436c38 0 38-26 38-64zM294 576h436c38 0 38 26 38 64s0 64-38 64H294c-38 0-38-26-38-64s0-64 38-64z m436-192H294c-38 0-38-26-38-64s0-64 38-64h436c38 0 38 26 38 64s0 64-38 64zM128 768H82C63 756 45 752 16 746v-42h48v-137H10v-55h182v55h-64V768z m16-520c-11 0-29-2-42-4 34 36 73 80 73 121-1 50-36 83-87 83-38 0-62-13-88-41l37-37c12 12 24 24 41 24 18 0 31-10 31-33 0-34-49-77-109-132v-37h192l-6 56h-42z m-5-242v2c28 12 41 30 41 55 0 45-36 71-92 71-31 0-57-12-82-33l35-41c16 13 28 20 44 20 17 0 27-8 27-23 0-17-13-28-55-28v-48c53 0 63-11 63-30 0-16-15-24-37-24-18 0-36 9-52 24L0-92c19-23 49-36 90-36 53 0 98 26 98 74 0 32-20 52-49 60z" horiz-adv-x="768" />
<glyph glyph-name="list-unordered" unicode="&#xf061;" d="M128 0c0-38 0-64-38-64H38c-38 0-38 26-38 64s0 64 38 64h52c38 0 38-26 38-64z m166 576h436c38 0 38 26 38 64s0 64-38 64H294c-38 0-38-26-38-64s0-64 38-64zM90 384H38c-38 0-38-26-38-64s0-64 38-64h52c38 0 38 26 38 64s0 64-38 64z m0 320H38c-38 0-38-26-38-64s0-64 38-64h52c38 0 38 26 38 64s0 64-38 64z m640-320H294c-38 0-38-26-38-64s0-64 38-64h436c38 0 38 26 38 64s0 64-38 64z m0-320H294c-38 0-38-26-38-64s0-64 38-64h436c38 0 38 26 38 64s0 64-38 64z" horiz-adv-x="768" />
<glyph glyph-name="location" unicode="&#xf060;" d="M384 832C172 832 0 672 0 480c0-289 384-672 384-672s384 383 384 672C768 672 596 832 384 832z m0-931C265 31 64 292 64 480 64 639 208 768 384 768c86 0 167-31 228-87 59-55 92-126 92-201 0-188-201-449-320-579z m128 579c0-71-57-128-128-128s-128 57-128 128 57 128 128 128 128-57 128-128z" horiz-adv-x="768" />
<glyph glyph-name="lock" unicode="&#xf06a;" d="M256 0h-64v64h64v-64z m512 384v-448c0-35-29-64-64-64H64c-35 0-64 29-64 64V384c0 35 29 64 64 64h64V576C128 717 243 832 384 832s256-115 256-256v-128h64c35 0 64-29 64-64z m-525 64h282V576c0 78-63 141-141 141s-141-63-141-141v-128z m461-64H128v-448h576V384z m-448-64h-64v-64h64v64z m0-128h-64v-64h64v64z" horiz-adv-x="768" />
<glyph glyph-name="logo-gist" unicode="&#xf0ad;" d="M301 401h157v-257c-35-17-105-22-162-22-164 0-222 141-222 323S132 769 296 769c82 0 132-15 210-47V790C465 811 400 832 296 832 72 832 0 660 0 446s71-386 296-386c105 0 180 17 230 41V465H301v-64z m409-238V572h-67v-402c0-80 37-110 110-110v57c-31 0-43 10-43 45v1z m16 558c0 28-21 50-50 50s-49-22-49-50 21-50 49-50 50 22 50 50z m278-364c-96 8-114 31-114 75 0 49 21 86 120 86 67 0 106-10 145-23v60c-44 19-97 25-144 25-141 0-187-77-187-148 0-69 30-120 175-133 99-8 113-40 113-86 0-47-28-91-132-91-71 0-119 12-149 23v-60c32-13 101-25 149-25 152 0 201 77 201 154 0 82-34 130-176 143h-1z m549 158v55h-155V730l-69-20v-135l-100-28v-31h100v-320c0-98 76-136 160-136 12 0 33 1 44 3v57c-12-2-26-2-39-2-62 0-96 25-96 86V516h155v-1z" horiz-adv-x="1600" />
<glyph glyph-name="logo-github" unicode="&#xf092;" d="M553 500H312c-7 0-12-5-12-11v-118c0-6 5-11 12-11h94v-147s-21-7-80-7c-69 0-165 25-165 237s101 239 195 239c81 0 116-14 139-21 7-2 13 5 13 11l27 114c0 3-1 6-4 9-9 6-65 37-205 37C165 832 0 764 0 435s189-379 348-379c132 0 212 57 212 57 3 1 4 6 4 8V489c0 6-5 11-12 11h1zM1773 804h-136c-6 0-11-5-11-11v-262h-212V793c0 6-5 11-11 11h-136c-6 0-11-5-11-11v-711c0-6 6-11 11-11h136c6 0 11 5 11 11V386h212l-1-304c0-6 5-11 11-11h136c6 0 11 5 11 11V793c0 6-5 11-11 11h1zM716 788c-49 0-88-39-88-88s39-88 88-88c48 0 87 39 87 88s-39 88-87 88z m78-227c0 6-5 11-11 11H647c-6 0-11-6-11-13 0 0 0-395 0-470 0-13 8-17 19-17 0 0 58 0 123 0 13 0 16 6 16 17 0 25 0 471 0 471v1z m1505 10h-134c-7 0-11-5-11-12v-348s-35-25-83-25-62 22-62 70c0 47 0 304 0 304 0 6-5 11-11 11h-137c-6 0-11-5-11-11 0 0 0-186 0-327s79-176 187-176c89 0 161 49 161 49s3-25 5-29c1-3 6-6 10-6h86c7 0 11 5 11 11l1 478c0 6-5 11-12 11z m369 16c-77 0-129-34-129-34V794c0 6-5 11-11 11h-136c-6 0-11-5-11-11l-1-711c0-6 6-11 12-11h95c4 0 7 1 9 5 3 4 6 33 6 33s56-53 161-53c124 0 195 63 195 282s-113 248-190 248z m-53-401c-47 1-78 23-78 23V434s31 19 69 22c49 5 96-10 96-126 0-122-21-146-87-144z m-1429 3c-6 0-21-3-37-3-50 0-67 23-67 53s0 200 0 200h102c6 0 10 5 10 12V560c0 6-5 11-10 11h-102V706c0 5-3 8-9 8H935c-6 0-9-3-9-8v-139s-70-17-74-18c-5-1-8-6-8-11v-87c0-7 5-12 11-12h71s0-92 0-210c0-156 109-172 183-172 34 0 75 11 81 14 4 1 6 6 6 10v96c0 7-5 12-11 12h1z" horiz-adv-x="2880" />
<glyph glyph-name="mail" unicode="&#xf03b;" d="M0 576v-512c0-35 29-64 64-64h768c35 0 64 29 64 64V576c0 35-29 64-64 64H64c-35 0-64-29-64-64z m832 0L448 256 64 576h768zM64 480l256-192L64 96V480z m64-416l224 192 96-96 96 96 224-192H128z m704 32L576 288l256 192v-384z" horiz-adv-x="896" />
<glyph glyph-name="mail-read" unicode="&#xf03c;" d="M384 512H256v64h128v-64z m192-64H256v-64h320v64z m320 31v-543c0-35-29-64-64-64H64c-35 0-64 29-64 64V479c0 21 10 40 27 52l101 72v37c0 35 29 64 64 64h77L448 832l179-128h77c35 0 64-29 64-64v-37l101-72c17-12 27-31 27-52zM192 352l256-160 256 160V640H192v-288zM64-32l288 192L64 352v-384z m704-32L448 128 128-64h640z m64 416L544 160l288-192V352z" horiz-adv-x="896" />
<glyph glyph-name="mail-reply" unicode="&#xf051;" d="M384 672l-384-288 384-288v192c111 0 329-61 384-280 0 291-196 451-384 472v192z" horiz-adv-x="768" />
<glyph glyph-name="mark-github" unicode="&#xf00a;" d="M512 832C229.252 832 0 602.748 0 320c0-226.251 146.688-418.126 350.155-485.813 25.593-4.686 34.937 11.125 34.937 24.626 0 12.188-0.469 52.562-0.718 95.314-128.708-23.46-161.707 31.541-172.469 60.373-5.525 14.809-30.407 60.249-52.398 72.263-17.988 9.828-43.26 33.237-0.917 33.735 40.434 0.476 69.348-37.308 78.471-52.75 45.938-77.749 119.876-55.627 148.999-42.5 4.654 32.999 17.902 55.627 32.501 68.373-113.657 12.939-233.22 56.875-233.22 253.063 0 55.94 19.968 101.561 52.658 137.404-5.22 12.999-22.844 65.095 5.063 135.563 0 0 42.937 13.749 140.811-52.501 40.811 11.406 84.594 17.031 128.124 17.22 43.499-0.188 87.314-5.874 128.188-17.28 97.689 66.311 140.686 52.501 140.686 52.501 28-70.532 10.375-122.564 5.124-135.499 32.811-35.844 52.626-81.468 52.626-137.404 0-196.686-119.751-240-233.813-252.686 18.439-15.876 34.748-47.001 34.748-94.748 0-68.437-0.686-123.627-0.686-140.501 0-13.625 9.312-29.561 35.25-24.562C877.436-97.99800000000005 1024 93.87400000000002 1024 320 1024 602.748 794.748 832 512 832z" horiz-adv-x="1024" />
<glyph glyph-name="markdown" unicode="&#xf0c9;" d="M950.154 640H73.846C33.127 640 0 606.873 0 566.154v-492.308C0 33.125 33.127 0 73.846 0h876.308c40.721 0 73.846 33.125 73.846 73.846V566.154C1024 606.873 990.875 640 950.154 640zM576 128.125L448 128V320l-96-123.077L256 320v-192H128V512h128l96-128 96 128 128 0.125V128.125zM767.091 96.125L608 320h96V512h128v-192h96L767.091 96.125z" horiz-adv-x="1024" />
<glyph glyph-name="megaphone" unicode="&#xf077;" d="M640 768c-11 0-23-3-33-9-92-56-319-220-415-247-88 0-192-43-192-160s104-160 192-160c19-5 41-15 64-26v-294h128V93c86-55 172-117 223-148 10-6 22-9 33-9 33 0 64 27 64 64V704c0 37-31 64-64 64z m0-768c-24 15-57 37-96 64-10 7-21 14-32 22V620c10 7 20 13 30 20 39 26 74 49 98 64v-704z m128 384h256v-64H768v64z m0-128l256-128v-64L768 192v64z m256 384v-64L768 448v64l256 128z" horiz-adv-x="1024" />
<glyph glyph-name="mention" unicode="&#xf0be;" d="M421-128c80 0 161 20 228 60l-27 60c-54-33-121-53-194-53-207 0-361 133-361 366C67 585 274 765 488 765c221 0 334-140 334-333 0-153-86-247-160-247-67 0-87 47-67 140l47 240h-67l-7-46c-26 40-60 53-100 53-140 0-234-153-234-280 0-107 60-167 147-167 54 0 107 34 147 80 7-60 60-93 127-93 107 0 241 107 241 320C896 665 742 832 501 832 234 832 0 619 0 299c0-280 187-427 421-427z m-20 320c-47 0-87 33-87 107 0 93 60 206 154 206 33 0 54-13 80-53l-33-193c-40-47-80-67-114-67z" horiz-adv-x="896" />
<glyph glyph-name="milestone" unicode="&#xf075;" d="M512 704H384V832h128v-128z m256-320H128c-35 0-64 29-64 64V576c0 35 29 64 64 64h640l128-128-128-128zM512 576H384v-128h128V576z m-128-768h128V320H384v-512z" horiz-adv-x="896" />
<glyph glyph-name="mirror" unicode="&#xf024;" d="M992 531L544 832 96 531c-19-12-32-29-32-51v-672l480 256 480-256V480c0 22-13 39-32 51z m-32-627L576 112v80h-64v-80L128-96V480L512 736v-288h64V736l384-256v-576zM384 384h320V512l192-192-192-192V256H384v-128L192 320l192 192v-128z" horiz-adv-x="1024" />
<glyph glyph-name="mortar-board" unicode="&#xf0d7;" d="M501 244l-245 76s0-96 0-160 115-96 256-96 256 32 256 96 0 160 0 160l-245-76c-7-2-15-2-23 0h1z m18 409c-4 1-9 1-13 0l-489-152c-21-7-21-36 0-43l111-35v-113c-19-11-32-32-32-55 0-12 3-23 9-32-5-9-9-20-9-32v-165c0-35 128-35 128 0v165c0 12-3 23-9 32 5 9 9 20 9 32 0 24-13 44-32 55v93l313-98c4-1 9-1 13 0l489 152c21 7 21 36 0 43l-488 153z m-6-205c-35 0-64 14-64 32s29 32 64 32 64-14 64-32-29-32-64-32z" horiz-adv-x="1024" />
<glyph glyph-name="mute" unicode="&#xf080;" d="M512 652v-664c0-43-52-64-82-34L192 192H64c-35 0-64 29-64 64V384c0 35 29 64 64 64h128l238 238c30 30 82 9 82-34z m482-206l-68 68-126-126-126 126-68-68 126-126-126-126 68-68 126 126 126-126 68 68-126 126 126 126z" horiz-adv-x="1024" />
<glyph glyph-name="no-newline" unicode="&#xf09c;" d="M1024 512v-192c0-35-29-64-64-64H768v-128L576 320l192 192v-128h128V512h128zM512 320c0-141-115-256-256-256S0 179 0 320s115 256 256 256 256-115 256-256zM96 214l266 266c-31 20-67 32-106 32-106 0-192-86-192-192 0-39 12-75 32-106z m352 106c0 39-12 75-32 106L150 160c31-20 67-32 106-32 106 0 192 86 192 192z" horiz-adv-x="1024" />
<glyph glyph-name="octoface" unicode="&#xf008;" d="M940.812 554.312c8.25 20.219 35.375 101.75-8.562 211.906 0 0-67.375 21.312-219.875-82.906C648.5 700.875 579.875 703.5 512 703.5c-67.906 0-136.438-2.625-200.5-20.25C159.031 787.531 91.719 766.219 91.719 766.219 47.812 656 74.938 574.531 83.188 554.312 31.5 498.438 0 427.125 0 339.656 0 10.437999999999988 213.25-64 510.844-64 808.562-64 1024 10.437999999999988 1024 339.656 1024 427.125 992.5 498.438 940.812 554.312zM512-1c-211.406 0-382.781 9.875-382.781 214.688 0 48.938 24.062 94.595 65.344 132.312 68.75 62.969 185.281 29.688 317.438 29.688 132.25 0 248.625 33.281 317.438-29.625 41.312-37.78 65.438-83.312 65.438-132.312C894.875 8.875 723.375-1 512-1zM351.156 319.562c-42.469 0-76.906-51.062-76.906-114.188s34.438-114.312 76.906-114.312c42.375 0 76.812 51.188 76.812 114.312S393.531 319.562 351.156 319.562zM672.875 319.562C630.5 319.562 596 268.5 596 205.375s34.5-114.312 76.875-114.312 76.812 51.188 76.812 114.312C749.75 268.5 715.312 319.562 672.875 319.562z" horiz-adv-x="1024" />
<glyph glyph-name="organization" unicode="&#xf037;" d="M304 515c35-41 86-67 144-67s109 26 144 67c22-40 64-67 112-67 71 0 128 57 128 128s-57 128-128 128c-26 0-49-8-69-21C615 768 539 832 448 832S281 768 261 683c-20 13-43 21-69 21-71 0-128-57-128-128s57-128 128-128c48 0 90 27 112 67z m333 97c13 24 38 41 67 41 42 0 77-35 77-77s-35-77-77-77-75 34-76 75c4 12 7 25 9 38zM448 769c71 0 129-58 129-129s-58-129-129-129-129 58-129 129S377 769 448 769zM192 499c-42 0-77 35-77 77s35 77 77 77c29 0 54-17 67-41 2-13 5-26 9-38-1-41-34-75-76-75z m640-51H64c-35 0-64-29-64-64v-192c0-35 29-64 64-64v-128c0-35 29-64 64-64h64c35 0 64 29 64 64v64h64v-192c0-35 29-64 64-64h128c35 0 64 29 64 64V64h64v-64c0-35 29-64 64-64h64c35 0 64 29 64 64V128c35 0 64 29 64 64V384c0 35-29 64-64 64zM192 0h-64V192H64V384h128v-384z m448 128h-64V256h-64v-384H384V256h-64v-128h-64V384h384v-256z m192 64h-64v-192h-64V384h128v-192z" horiz-adv-x="896" />
<glyph glyph-name="package" unicode="&#xf0c4;" d="M0 559v-478c0-29 19-54 48-62l416-111c10-3 22-3 32 0l416 111c29 8 48 33 48 62V559c0 29-19 54-48 62L496 732c-10 2-22 2-32 0L48 621c-29-8-48-33-48-62z m448-582L64 79V512l384-103v-432zM64 576l160 43 416-111-160-43L64 576z m832-497L512-23V409l128 35v-156l128 34V478l128 34v-433zM768 542L352 653l128 34 416-111-128-34z" horiz-adv-x="1024" />
<glyph glyph-name="paintcan" unicode="&#xf0d1;" d="M384 832C171.923 832 0 660.077 0 448v-64c0-35.346 28.654-64 64-64v-320c0-70.692 143.269-128 320-128s320 57.308 320 128V320c35.346 0 64 28.654 64 64v64C768 660.077 596.077 832 384 832zM576 192v-32c0-17.673-14.327-32-32-32s-32 14.327-32 32v32c0 17.673-14.327 32-32 32s-32-14.327-32-32v-160c0-17.673-14.327-32-32-32s-32 14.327-32 32V160c0 17.673-14.327 32-32 32s-32-14.327-32-32v-32c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c-35.346 0-64 28.654-64 64V371.193C186.382 340.108 279.318 320 384 320s197.618 20.108 256 51.193V256C640 220.654 611.346 192 576 192zM384 384c-107.433 0-199.393 26.474-237.372 64 37.979 37.526 129.939 64 237.372 64s199.393-26.474 237.372-64C583.393 410.474 491.433 384 384 384zM384 576c-176.62 0-319.816-57.236-319.996-127.867-0.001 0.001-0.002 0.001-0.003 0.002C64.075 624.804 207.314 768 384 768c176.731 0 320-143.269 320-320C704 518.692 560.731 576 384 576z" horiz-adv-x="768" />
<glyph glyph-name="pencil" unicode="&#xf058;" d="M0 64v-192h192l512 512-192 192L0 64z m192-128H64V64h64v-64h64v-64z m659 595l-83-83-192 192 83 83c25 25 65 25 90 0l102-102c25-25 25-65 0-90z" horiz-adv-x="896" />
<glyph glyph-name="person" unicode="&#xf018;" d="M448 448H64c-35 0-64-29-64-64v-320h128v-192c0-35 29-64 64-64h128c35 0 64 29 64 64V64h128V384c0 35-29 64-64 64z m0-320h-64V256h-64v-384H192V256h-64v-128H64V384h384v-256z m0 512C448 746 362 832 256 832S64 746 64 640s86-192 192-192 192 86 192 192zM256 512c-71 0-128 57-128 128S185 768 256 768s128-57 128-128-57-128-128-128z" horiz-adv-x="512" />
<glyph glyph-name="pin" unicode="&#xf041;" d="M640 755v-51l32-64-288-192H141c-28 0-43-34-22-55l201-201L64-128l320 256 201-201c21-21 55-6 55 22V192l192 288 64-32h51c28 0 43 34 22 55L695 777c-21 21-55 6-55-22z" horiz-adv-x="1024" />
<glyph glyph-name="plug" unicode="&#xf0d4;" d="M960 448v64H704V640H576v-64H448c-66 0-113-52-128-128l-64-64c-106 0-192-86-192-192v-128h64V192c0 71 57 128 128 128l64-64c16-74 63-128 128-128h128v-64h128V192h256v64H704V448h256z" horiz-adv-x="1024" />
<glyph glyph-name="plus" unicode="&#xf05d;" d="M768 256H448v-320H320V256H0V384h320V704h128v-320h320v-128z" horiz-adv-x="768" />
<glyph glyph-name="primitive-dot" unicode="&#xf052;" d="M0 320c0 141 115 256 256 256s256-115 256-256-115-256-256-256S0 179 0 320z" horiz-adv-x="512" />
<glyph glyph-name="primitive-square" unicode="&#xf053;" d="M512 64H0V576h512V64z" horiz-adv-x="512" />
<glyph glyph-name="pulse" unicode="&#xf085;" d="M736 320.062L563.188 486.406 422.406 288 352 729.594 152.438 320.062H0V192h230.406L288 307.188l57.594-345.562L576 288l102.375-96H896V320.062H736z" horiz-adv-x="896" />
<glyph glyph-name="question" unicode="&#xf02c;" d="M384 192h128v-128H384V192z m256 224c0-137-128-160-128-160H384c0 35 29 64 64 64h32c18 0 32 14 32 32v64c0 18-14 32-32 32h-64c-18 0-32-14-32-32v-32H256c0 96 96 192 192 192s192-64 192-160zM448 685c201 0 365-164 365-365S649-45 448-45 83 119 83 320s164 365 365 365m0 83C201 768 0 567 0 320s201-448 448-448 448 201 448 448S695 768 448 768z" horiz-adv-x="896" />
<glyph glyph-name="quote" unicode="&#xf063;" d="M394 629C239 529 163 426 163 254c10 3 19 3 28 3 81 0 160-55 160-154 0-103-66-167-160-167C70-64 0 33 0 208 0 451 112 626 321 747l73-118z m448 0C687 529 611 426 611 254c10 3 19 3 28 3 81 0 160-55 160-154 0-103-66-167-160-167-121 0-191 97-191 272 0 243 112 418 321 539l73-118z" horiz-adv-x="896" />
<glyph glyph-name="radio-tower" unicode="&#xf030;" d="M306.838 441.261c15.868 16.306 15.868 42.731 0 59.037-20.521 21.116-30.643 48.417-30.705 76.124 0.062 27.77 10.183 55.039 30.705 76.186 15.868 16.337 15.868 42.764 0 59.069-7.934 8.184-18.272 12.275-28.706 12.275-10.371 0-20.804-4.029-28.738-12.213-36.266-37.297-54.633-86.433-54.57-135.317-0.062-48.792 18.305-97.927 54.57-135.161C265.262 424.955 290.97 424.955 306.838 441.261zM149.093 798.858c-8.121 8.309-18.68 12.463-29.3 12.463-10.558 0-21.179-4.154-29.237-12.463C30.8 737.509 0.751 656.856 0.813 576.422 0.751 496.081 30.8 415.272 90.494 353.985c16.181-16.618 42.356-16.618 58.537 0 16.118 16.587 16.118 43.513 0 60.067-43.7 44.98-65.44 103.456-65.44 162.368s21.74 117.449 65.44 162.368C165.149 755.439 165.149 782.365 149.093 798.858zM513.031 472.153c57.351 0 103.956 46.574 103.956 103.956 0 57.382-46.605 103.955-103.956 103.955-57.381 0-103.956-46.573-103.956-103.955C409.076 518.727 455.65 472.153 513.031 472.153zM933.539 798.233c-16.181 16.618-42.355 16.618-58.475 0-16.181-16.587-16.181-43.513 0-60.068 43.668-44.918 65.409-103.456 65.409-162.368 0-58.85-21.805-117.387-65.473-162.306-16.117-16.618-16.117-43.575 0.062-60.068 8.059-8.309 18.616-12.463 29.237-12.463 10.558 0 21.178 4.154 29.236 12.463 59.726 61.287 89.774 142.096 89.649 222.437C1023.313 656.138 993.264 736.947 933.539 798.233zM513.281 389.127L513.281 389.127c-26.489-0.062-53.04 6.466-77.091 19.429L235.057-127.59000000000003h95.209l54.819 63.973h255.891l53.977-63.973h95.272L589.124 408.431C565.384 395.655 539.395 389.127 513.281 389.127zM512.656 358.483L577.004 128.29999999999995H449.059L512.656 358.483zM385.086 0.3550000000000182l63.974 63.973h127.944l63.974-63.973H385.086zM717.194 710.958c-15.868-16.306-15.868-42.731 0-59.037 20.491-21.116 30.611-48.511 30.674-76.124-0.062-27.77-10.183-55.102-30.674-76.187-15.868-16.336-15.868-42.763 0-59.068 7.871-8.184 18.242-12.213 28.737-12.213 10.309 0 20.741 4.029 28.675 12.213 36.298 37.234 54.665 86.433 54.54 135.255 0.125 48.792-18.181 97.927-54.54 135.161C758.801 727.264 733.062 727.264 717.194 710.958z" horiz-adv-x="1024" />
<glyph glyph-name="repo" unicode="&#xf001;" d="M256 256h-64v64h64v-64z m0 192h-64v-64h64v64z m0 128h-64v-64h64v64z m0 128h-64v-64h64v64z m512 64v-768c0-35-29-64-64-64H384v-128l-96 96-96-96V-64H64c-35 0-64 29-64 64V768C0 803 29 832 64 832h640c35 0 64-29 64-64z m-64-640H64v-128h128v64h192v-64h320V128z m0 640H128v-576h576V768z" horiz-adv-x="768" />
<glyph glyph-name="repo-clone" unicode="&#xf04c;" d="M960 832H576v-448c0-35 29-64 64-64h64v-64h64v64h192c35 0 64 29 64 64V768c0 35-29 64-64 64zM704 384h-64v64h64v-64z m256 0H768v64h192v-64z m0 128H704V768h256v-256z m-704 0h-64v64h64v-64z m0 128h-64v64h64v-64zM128 768h384V832H64C29 832 0 803 0 768v-768c0-35 29-64 64-64h128v-128l96 96 96-96V-64h320c35 0 64 29 64 64V192H128V768z m576-640v-128H384v64H192v-64H64V128h640zM192 320h64v-64h-64v64z m64 64h-64v64h64v-64z" horiz-adv-x="1024" />
<glyph glyph-name="repo-force-push" unicode="&#xf04a;" d="M640 256H512v-448H384V256H256l144 192H256l192 256 192-256H496l144-192zM704 832H64C29 832 0 803 0 768v-768c0-35 29-64 64-64h256v64H64V128h256v64H128V768h576v-576H576v-64h128v-128H576v-64h128c35 0 64 29 64 64V768c0 35-29 64-64 64z" horiz-adv-x="768" />
<glyph glyph-name="repo-forked" unicode="&#xf002;" d="M512 768c-71 0-128-57-128-128 0-47 26-88 64-110v-82L320 320 192 448v82c38 22 64 63 64 110 0 71-57 128-128 128S0 711 0 640c0-47 26-88 64-110v-114l192-192v-114c-38-22-64-63-64-110 0-71 57-128 128-128s128 57 128 128c0 47-26 88-64 110V224l192 192V530c38 22 64 63 64 110 0 71-57 128-128 128zM128 563c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z m192-640c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z m192 640c-42 0-77 35-77 77s35 77 77 77 77-35 77-77-35-77-77-77z" horiz-adv-x="640" />
<glyph glyph-name="repo-pull" unicode="&#xf006;" d="M832 320V448H448V576h384V704l192-192-192-192zM256 704h-64v-64h64v64z m448-320h64v-384c0-35-29-64-64-64H384v-128l-96 96-96-96V-64H64c-35 0-64 29-64 64V768C0 803 29 832 64 832h640c35 0 64-29 64-64v-128h-64V768H128v-576h576V384z m0-256H64v-128h128v64h192v-64h320V128zM256 448h-64v-64h64v64z m0 128h-64v-64h64v64z m-64-320h64v64h-64v-64z" horiz-adv-x="1024" />
<glyph glyph-name="repo-push" unicode="&#xf005;" d="M256 640h-64v64h64v-64z m-64-128h64v64h-64v-64z m256 0L256 256h128v-448h128V256h128L448 512zM704 832H64C29 832 0 803 0 768v-768c0-35 29-64 64-64h256v64H64V128h256v64H128V768h577l-1-576H576v-64h128v-128H576v-64h128c35 0 64 29 64 64V768c0 35-29 64-64 64z" horiz-adv-x="768" />
<glyph glyph-name="rocket" unicode="&#xf033;" d="M1024 832s-6-24-19-68c-13-45-35-101-68-170-45 5-81 21-106 46s-40 60-45 105c69 33 125 56 169 69 45 13 69 18 69 18zM779 587c-17 17-30 35-40 56-10 20-17 42-22 65-37-21-74-45-111-72-37-28-73-60-108-95-45-45-85-116-114-157H192L0 192h192l128 128c-22-49-65-191-64-192l64-64c1-1 143 41 192 64L384 0v-192l192 192V192c41 29 112 70 157 114 35 35 67 72 94 109 28 37 52 74 73 110-23 5-45 12-66 22-20 10-38 23-55 40z" horiz-adv-x="1024" />
<glyph glyph-name="rss" unicode="&#xf034;" d="M128 0H0V128c71 0 128-57 128-128zM0 640v-64c318 0 576-258 576-576h64c0 353-287 640-640 640z m0-256v-64c176 0 320-144 320-320h64c0 212-172 384-384 384z" horiz-adv-x="640" />
<glyph glyph-name="ruby" unicode="&#xf047;" d="M832 448L512 128V576h192l128-128z m192 0L512-64 0 448l256 256h512l256-256zM512 32l416 416-192 192H288L96 448l416-416z" horiz-adv-x="1024" />
<glyph glyph-name="search" unicode="&#xf02e;" d="M1005-83L761 162c45 63 71 139 71 222 0 212-172 384-384 384S64 596 64 384s172-384 384-384c83 0 159 26 222 71l245-244c12-13 29-19 45-19s33 6 45 19c25 25 25 65 0 90zM448 83c-166 0-301 135-301 301s135 301 301 301 301-135 301-301-135-301-301-301z" horiz-adv-x="1024" />
<glyph glyph-name="server" unicode="&#xf097;" d="M704 448H64c-35 0-64-29-64-64v-128c0-35 29-64 64-64h640c35 0 64 29 64 64V384c0 35-29 64-64 64zM128 256H64V384h64v-128z m128 0h-64V384h64v-128z m128 0h-64V384h64v-128z m128 0h-64V384h64v-128zM704 768H64C29 768 0 739 0 704v-128c0-35 29-64 64-64h640c35 0 64 29 64 64V704c0 35-29 64-64 64zM128 576H64V704h64v-128z m128 0h-64V704h64v-128z m128 0h-64V704h64v-128z m128 0h-64V704h64v-128z m192 64h-64v64h64v-64z m0-512H64c-35 0-64-29-64-64v-128c0-35 29-64 64-64h640c35 0 64 29 64 64V64c0 35-29 64-64 64zM128-64H64V64h64v-128z m128 0h-64V64h64v-128z m128 0h-64V64h64v-128z m128 0h-64V64h64v-128z" horiz-adv-x="768" />
<glyph glyph-name="settings" unicode="&#xf07c;" d="M192 384h-64V704h64v-320z m-64-448h64V128h-64v-192z m320 0h64V320h-64v-384z m320 0h64V64h-64v-128z m64 768h-64v-384h64V704z m-320 0h-64v-128h64V704zM256 320H64c-35 0-64-29-64-64s29-64 64-64h192c35 0 64 29 64 64s-29 64-64 64z m320 192H384c-35 0-64-29-64-64s29-64 64-64h192c35 0 64 29 64 64s-29 64-64 64z m320-256H704c-35 0-64-29-64-64s29-64 64-64h192c35 0 64 29 64 64s-29 64-64 64z" horiz-adv-x="1024" />
<glyph glyph-name="shield" unicode="&#xf0e1;" d="M448 832L0 704v-385c0-299 340-511 448-511s448 212 448 511V704L448 832zM320 128l73 179c3 15-4 30-16 38-36 23-57 61-57 103 0 70 57 128 127 128 69 0 129-58 129-128 0-42-21-80-57-103-12-8-19-23-16-38l73-179H320z" horiz-adv-x="896" />
<glyph glyph-name="sign-in" unicode="&#xf036;" d="M384 400v-336h256V320h64v-256c0-35-29-64-64-64H384v-192L35-18c-21 11-35 33-35 58V768C0 803 29 832 64 832h576c35 0 64-29 64-64v-192h-64V768H128l256-128v-144l192 144v-128h256v-128H576v-128L384 400z" horiz-adv-x="896" />
<glyph glyph-name="sign-out" unicode="&#xf032;" d="M768 256V384H512V512h256V640l256-192-256-192zM640 64H384V640L128 768h512v-192h64V768c0 35-29 64-64 64H64C29 832 0 803 0 768v-728c0-25 14-47 35-58l349-174V0h256c35 0 64 29 64 64V320h-64v-256z" horiz-adv-x="1024" />
<glyph glyph-name="smiley" unicode="&#xf0e7;" d="M512 832C229 832 0 603 0 320s229-512 512-512 512 229 512 512S795 832 512 832z m308-820c-40-40-87-71-139-93-53-23-110-34-169-34s-116 11-169 34c-52 22-99 53-139 93s-71 87-93 139c-23 53-34 110-34 169s11 116 34 169c22 52 53 99 93 139s87 71 139 93c53 23 110 34 169 34s116-11 169-34c52-22 99-53 139-93s71-87 93-139c23-53 34-110 34-169s-11-116-34-169c-22-52-53-99-93-139zM256 461v38c0 42 34 76 77 76h38c42 0 76-34 76-76v-38c0-43-34-77-76-77h-38c-43 0-77 34-77 77z m320 0v38c0 42 34 76 77 76h38c42 0 76-34 76-76v-38c0-43-34-77-76-77h-38c-43 0-77 34-77 77z m256-269c-46-120-186-192-320-192s-274 72-320 192c-9 25 15 64 42 64h550c26 0 57-39 48-64z" horiz-adv-x="1024" />
<glyph glyph-name="squirrel" unicode="&#xf0b2;" d="M768 768c-141.385 0-256-83.75-256-186.875C512 457.25 544 387 512 192c0 288-177 405.783-256 405.783 3.266 32.17-30.955 42.217-30.955 42.217s-14-7.124-19.354-21.583c-17.231 20.053-36.154 17.54-36.154 17.54l-8.491-37.081c0 0-117.045-40.876-118.635-206.292C56 371 141.311 353.898 201.887 364.882c57.157-2.956 42.991-50.648 30.193-63.446C178.083 247.438 128 320 64 320s-64-64 0-64 64-64 192-64c-198-77 0-256 0-256h-64c-64 0-64-64-64-64s256 0 384 0c192 0 320 64 320 222.182 0 54.34-27.699 114.629-64 162.228C697.057 349.433 782.453 427.566 832 384s192-64 192 128C1024 653.385 909.385 768 768 768zM160 448c-17.674 0-32 14.327-32 32 0 17.674 14.326 32 32 32 17.673 0 32-14.326 32-32C192 462.327 177.673 448 160 448z" horiz-adv-x="1024" />
<glyph glyph-name="star" unicode="&#xf02a;" d="M896 448l-313.5 40.781L448 768 313.469 488.781 0 448l230.469-208.875L171-63.93799999999999l277 148.812 277.062-148.812L665.5 239.125 896 448z" horiz-adv-x="896" />
<glyph glyph-name="stop" unicode="&#xf08f;" d="M640 768H256L0 512v-384l256-256h384l256 256V512L640 768z m192-608L608-64H288L64 160V480l224 224h320l224-224v-320zM384 576h128v-320H384V576z m0-384h128v-128H384V192z" horiz-adv-x="896" />
<glyph glyph-name="sync" unicode="&#xf087;" d="M655.461 358.531c11.875-81.719-13.062-167.781-76.812-230.594-94.188-92.938-239.5-104.375-346.375-34.562l74.875 73L31.96 204.75 70.367-64l84.031 80.5c150.907-111.25 364.938-100.75 502.063 34.562 79.5 78.438 115.75 182.562 111.25 285.312L655.461 358.531zM189.46 511.938c94.156 92.938 239.438 104.438 346.313 34.562l-75-72.969 275.188-38.406L697.586 704l-83.938-80.688C462.711 734.656 248.742 724.031 111.585 588.75 32.085 510.344-4.133 406.219 0.335 303.5l112.25-22.125C100.71 363.125 125.71 449.094 189.46 511.938z" horiz-adv-x="768.051" />
<glyph glyph-name="tag" unicode="&#xf015;" d="M431 657c-30 30-71 47-113 47H160C72 704 0 632 0 544v-158c0-42 17-83 47-113l388-388c25-25 65-25 90 0l294 294c25 25 25 65 0 90L431 657zM88 314c-20 19-30 45-30 72V544c0 56 46 102 102 102h158c27 0 53-10 72-30l393-392-303-303L88 314z m40 262h128v-128H128V576z" horiz-adv-x="896" />
<glyph glyph-name="tasklist" unicode="&#xf0e5;" d="M986 256H486c-38 0-38 26-38 64s0 64 38 64h500c38 0 38-26 38-64s0-64-38-64zM614 576c-38 0-38 26-38 64s0 64 38 64h372c38 0 38-26 38-64s0-64-38-64H614zM0 582l90 83 102-102L454 832l90-90-352-352L0 582z m486-518h500c38 0 38-26 38-64s0-64-38-64H486c-38 0-38 26-38 64s0 64 38 64z" horiz-adv-x="1024" />
<glyph glyph-name="telescope" unicode="&#xf088;" d="M512 256l192-384h-64L512 128v-320h-64V192L320-128h-64l128 320 128 64zM448 832h-64v-64h64V832zM320 640h-64v-64h64v64zM128 768H64v-64h64V768zM40 256c-14-10-18-28-10-43l35-59c8-15 26-20 41-13l89 42-74 128-81-55z m505 345L174 348l79-137 405 194-113 196z m270-82l-94 161c-9 16-30 21-46 11l-77-53 118-205 85 41c17 8 23 28 14 45z" horiz-adv-x="896" />
<glyph glyph-name="terminal" unicode="&#xf0c8;" d="M448 192h256v-64H448v64z m-192-64l192 192-192 192-48-48 144-144-144-144 48-48z m640 512v-640c0-35-29-64-64-64H64c-35 0-64 29-64 64V640c0 35 29 64 64 64h768c35 0 64-29 64-64z m-64 0H64v-640h768V640z" horiz-adv-x="896" />
<glyph glyph-name="text-size" unicode="&#xf0e3;" d="M1150-64h-144l-61 208H685l-61-208H480l-44 149H226l-45-149H42l211 614h160l139-406 185 560h161l252-768zM407 184s-65 231-75 263h-5l-72-263h152z m507 67l-97 347h-4l-96-347h197z" horiz-adv-x="1152" />
<glyph glyph-name="three-bars" unicode="&#xf05e;" d="M730 256H38c-38 0-38 26-38 64s0 64 38 64h692c38 0 38-26 38-64s0-64-38-64z m0 256H38c-38 0-38 26-38 64s0 64 38 64h692c38 0 38-26 38-64s0-64-38-64zM38 128h692c38 0 38-26 38-64s0-64-38-64H38c-38 0-38 26-38 64s0 64 38 64z" horiz-adv-x="768" />
<glyph glyph-name="thumbsdown" unicode="&#xf0db;" d="M1023 331l-62 381C950 800 840 832 768 832H364c-13 0-24-3-34-9l-92-55H128C60 768 0 708 0 640v-256c0-68 60-129 128-128h128c58 0 89-29 153-99 58-64 56-115 40-209-5-32 4-64 27-91 25-30 63-49 100-49 117 0 192 238 192 321l-1 63c1 0 1 0 1 0h129c74 0 125 51 127 126 0 4 1 8-1 13z m-126-76H769c-45 0-66-18-66-62l2-66c0-81-75-256-128-256-32 0-69 32-64 64 16 101 22 178-57 265-65 72-113 120-200 120V704l107 64h405c47 0 125-20 128-64l1-1 64-384c-2-41-24-64-64-64z" horiz-adv-x="1024" />
<glyph glyph-name="thumbsup" unicode="&#xf0da;" d="M896 448H768s0 0-1 0l1 63c0 83-75 321-192 321-37 0-75-19-100-49-23-26-32-58-27-90 16-95 18-146-40-210-64-70-95-99-153-99H128C60 384 0 324 0 256v-256c0-68 60-128 128-128h110l92-55c10-6 21-9 33-9h405c72 0 182 32 192 120l63 381c1 5 1 9 1 13-2 75-54 126-128 126z m0-512c-3-44-81-64-128-64H363l-107 64V320c87 0 135 48 200 120 79 87 73 164 56 264-5 32 32 64 64 64 53 0 128-175 128-256l-1-66c0-44 21-62 65-62h128c40 0 63-23 64-64l-64-384z" horiz-adv-x="1024" />
<glyph glyph-name="tools" unicode="&#xf031;" d="M286.547 366.984c16.843-16.812 81.716-85.279 81.716-85.279l35.968 37.093-56.373 58.248L456.072 491.98c0 0-48.842 47.623-27.468 28.655 20.438 75.903 1.812 160.589-55.842 220.243C315.608 800.064 234.392 819.47 161.425 799.096l123.653-127.715-32.53-125.309-121.06-33.438L7.898 640.3820000000001c-19.718-75.436-0.969-159.339 56.311-218.556C124.302 359.703 210.83 341.453 286.547 366.984zM698.815 242.769L549.694 95.46100000000001l245.932-254.805c20.062-20.812 46.498-31.188 72.872-31.188 26.25 0 52.624 10.375 72.811 31.188 40.249 41.624 40.249 108.997 0 150.62L698.815 242.769zM1023.681 670.162L867.06 832.001 405.387 354.703l56.373-58.248L185.425 10.839000000000055l-63.154-33.749-89.217-145.559 22.719-23.562 140.839 92.247 32.655 65.312 276.336 285.554 56.404-58.248L1023.681 670.162z" horiz-adv-x="1024" />
<glyph glyph-name="trashcan" unicode="&#xf0d0;" d="M640 704H512c0 35-29 64-64 64H256c-35 0-64-29-64-64H64c-35 0-64-29-64-64v-64c0-35 29-64 64-64v-576c0-35 29-64 64-64h448c35 0 64 29 64 64V512c35 0 64 29 64 64v64c0 35-29 64-64 64z m-64-768H128V512h64v-512h64V512h64v-512h64V512h64v-512h64V512h64v-576z m64 640H64v64h576v-64z" horiz-adv-x="768" />
<glyph glyph-name="triangle-down" unicode="&#xf05b;" d="M0 512l384-384 384 384H0z" horiz-adv-x="768" />
<glyph glyph-name="triangle-left" unicode="&#xf044;" d="M384 704L0 320l384-384V704z" horiz-adv-x="384" />
<glyph glyph-name="triangle-right" unicode="&#xf05a;" d="M0-64l384 384L0 704v-768z" horiz-adv-x="384" />
<glyph glyph-name="triangle-up" unicode="&#xf0aa;" d="M768 128L384 512 0 128h768z" horiz-adv-x="768" />
<glyph glyph-name="unfold" unicode="&#xf039;" d="M736 288l160-160c0-35-29-64-64-64H576v64h224L672 256H224L96 128h224v-64H64c-35 0-64 29-64 64l160 160L0 448c0 35 29 64 64 64h256v-64H96l128-128h448l128 128H576v64h256c35 0 64-29 64-64L736 288z m-352 96h128V576h128L448 768 256 576h128v-192z m128-192H384v-192H256l192-192 192 192H512V192z" horiz-adv-x="896" />
<glyph glyph-name="unmute" unicode="&#xf0ba;" d="M704 319c0-70-29-134-75-181l-43 43c35 36 57 84 57 138s-22 103-57 138l43 43c46-46 75-110 75-181zM430 686L192 448H64c-35 0-64-29-64-64v-128c0-35 29-64 64-64h128l238-238c30-30 82-9 82 34V652c0 43-52 64-82 34z m380-5l-43-43c82-82 132-194 132-319 0-124-50-237-132-319l43-43c93 93 150 221 150 362 0 142-57 270-150 362z m-90-90l-44-43c59-59 95-140 95-229s-36-170-95-228l44-43c69 69 112 165 112 271s-43 202-112 272z" horiz-adv-x="1024" />
<glyph glyph-name="unverified" unicode="&#xf0e8;" d="M1003 380l-69 86c-11 14-18 31-20 49l-12 109c-5 45-40 80-85 85l-109 12c-19 2-36 10-50 21l-86 69c-35 28-85 28-120 0l-86-69c-14-11-31-18-49-20l-109-12c-45-5-80-40-85-85l-12-109c-2-19-10-36-21-50l-69-86c-28-35-28-85 0-120l69-86c11-14 18-31 20-49l12-109c5-45 40-80 85-85l109-12c19-2 36-10 50-21l86-69c35-28 85-28 120 0l86 69c14 11 31 18 49 20l109 12c45 5 80 40 85 85l12 109c2 19 10 36 21 50l69 86c28 35 28 85 0 120zM576 96c0-18-14-32-32-32h-64c-17 0-32 14-32 32v64c0 18 15 32 32 32h64c18 0 32-14 32-32v-64z m100 313c-4-11-11-21-19-30-8-10-9-12-21-24-10-11-20-19-33-29-7-6-13-12-18-17s-9-11-12-17-5-12-7-19-2-8-2-16H456c0 14 0 20 2 31 2 12 5 23 9 33 4 9 9 18 16 27 7 8 15 16 26 24 17 12 23 19 31 33s13 24 13 38c0 17-4 29-13 37-8 8-20 12-37 12-6 0-12-1-19-3s-11-6-16-10-9-7-13-13-6-9-6-18H321c0 24 8 36 17 53 10 17 23 32 39 43s35 19 56 24 45 8 70 8c28 0 53-3 75-8 22-6 40-14 56-25 15-11 26-24 35-40 8-16 12-35 12-56 0-14 0-27-5-38z" horiz-adv-x="1024" />
<glyph glyph-name="verified" unicode="&#xf0e6;" d="M1003 380l-69 86c-11 14-18 31-20 49l-12 109c-5 45-40 80-85 85l-109 12c-19 2-36 10-50 21l-86 69c-35 28-85 28-120 0l-86-69c-14-11-31-18-49-20l-109-12c-45-5-80-40-85-85l-12-109c-2-19-10-36-21-50l-69-86c-28-35-28-85 0-120l69-86c11-14 18-31 20-49l12-109c5-45 40-80 85-85l109-12c19-2 36-10 50-21l86-69c35-28 85-28 120 0l86 69c14 11 31 18 49 20l109 12c45 5 80 40 85 85l12 109c2 19 10 36 21 50l69 86c28 35 28 85 0 120zM416 64L192 288l96 96 128-128 320 320 96-99-416-413z" horiz-adv-x="1024" />
<glyph glyph-name="versions" unicode="&#xf064;" d="M832 640H448c-35 0-64-29-64-64v-512c0-35 29-64 64-64h384c35 0 64 29 64 64V576c0 35-29 64-64 64z m-64-512H512V512h256v-384zM256 576h64v-64h-64v-384h64v-64h-64c-35 0-64 29-64 64V512c0 35 29 64 64 64zM64 512h64v-64H64v-256h64v-64H64c-35 0-64 29-64 64V448c0 35 29 64 64 64z" horiz-adv-x="896" />
<glyph glyph-name="watch" unicode="&#xf0e0;" d="M384 320h128v-64H320V512h64v-192z m384 0c0-142-77-266-192-332v-116c0-35-29-64-64-64H256c-35 0-64 29-64 64V-12C77 54 0 178 0 320s77 266 192 332V768c0 35 29 64 64 64h256c35 0 64-29 64-64v-116c115-66 192-190 192-332z m-64 0c0 177-143 320-320 320S64 497 64 320s143-320 320-320 320 143 320 320z" horiz-adv-x="768" />
<glyph glyph-name="x" unicode="&#xf081;" d="M479 320l240-240-95-95-240 240-240-240-95 95 240 240L49 560l95 95 240-240 240 240 95-95-240-240z" horiz-adv-x="768" />
<glyph glyph-name="zap" unicode="&#x26A1;" d="M640 384H384L576 832 0 256h256L64-192 640 384z" horiz-adv-x="640" />
</font>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 66 KiB

BIN
public/assets/octicons-3.5.0/octicons.ttf

Binary file not shown.

BIN
public/assets/octicons-3.5.0/octicons.woff

Binary file not shown.

BIN
public/assets/octicons-4.3.0/octicons.eot

Binary file not shown.

1
public/assets/octicons-4.3.0/octicons.min.css vendored

File diff suppressed because one or more lines are too long

429
public/assets/octicons-4.3.0/octicons.svg

@ -0,0 +1,429 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20150913 at Mon Jul 11 12:02:11 2016
By Aaron Shekey
</metadata>
<defs>
<font id="octicons" horiz-adv-x="96" >
<font-face
font-family="octicons"
font-weight="400"
font-stretch="normal"
units-per-em="96"
panose-1="2 0 5 9 0 0 0 0 0 0"
ascent="84"
descent="-12"
bbox="-0.5 -12.5 96.5 84.5"
underline-thickness="4"
underline-position="-14"
unicode-range="U+2665-F27C"
/>
<missing-glyph
d="M3 0v64h24v-64h-24zM6 3h18v58h-18v-58z" />
<glyph glyph-name=".notdef"
d="M3 0v64h24v-64h-24zM6 3h18v58h-18v-58z" />
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn"
/>
<glyph glyph-name="heart" unicode="&#x2665;"
d="M67.5 66.5q4.5 -5.5 4.5 -12.5q0 -8 -4 -16q-5 -10 -32 -32q-27 21 -32 32q-4 8 -4 16q0 7 4.5 12.5t13.5 5.5q8 0 13 -6q5 -5 5 -6q0 1 5 6q5 6 13 6q9 0 13.5 -5.5z" />
<glyph glyph-name="zap" unicode="&#x26a1;"
d="M60 42l-54 -54l18 42h-24l54 54l-18 -42h24z" />
<glyph glyph-name="light-bulb" unicode="&#xf000;"
d="M39 84q14 0 23.5 -8.5t9.5 -21.5q0 -8 -6 -18q-11 -18 -12 -24v-6h-30v6q-1 6 -12 24q-6 10 -6 18q0 13 9.5 21.5t23.5 8.5zM61 39q5 9 5 15q0 10 -8 17t-19 7t-19 -7t-8 -17q0 -6 5 -15q2 -3 4 -7q8 -12 9 -19v-1h18v1q1 7 9 19q2 4 4 7zM24 0h30q-2 -12 -15 -12t-15 12
z" />
<glyph glyph-name="repo" unicode="&#xf001;"
d="M24 30h-6v6h6v-6zM24 48v-6h-6v6h6zM24 60v-6h-6v6h6zM24 72v-6h-6v6h6zM72 78v-72q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h60q6 0 6 -6zM66 18h-60v-12h12v6h18v-6h30v12zM66 78h-54v-54h54v54z" />
<glyph glyph-name="repo-forked" unicode="&#xf002;"
d="M48 78q12 0 12 -12q0 -7 -6 -10v-11l-18 -18v-11q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v11l-18 18v11q-6 3 -6 10q0 12 12 12t12 -12q0 -7 -6 -10v-8l12 -12l12 12v8q-6 3 -6 10q0 12 12 12zM12 59q7 0 7 7t-7 7t-7 -7t7 -7zM30 -1q7 0 7 7t-7 7t-7 -7t7 -7zM48 59
q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="repo-push" unicode="&#xf005;"
d="M24 66h-6v6h6v-6zM18 54v6h6v-6h-6zM42 54l18 -24h-12v-42h-12v42h-12zM66 84q6 0 6 -6v-72q0 -6 -6 -6h-12v6h12v12h-12v6h12v54h-54v-54h18v-6h-24v-12h24v-6h-24q-6 0 -6 6v72q0 6 6 6h60z" />
<glyph glyph-name="repo-pull" unicode="&#xf006;"
d="M78 36v12h-36v12h36v12l18 -18zM24 72v-6h-6v6h6zM66 42h6v-36q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h60q6 0 6 -6v-12h-6v12h-54v-54h54v18zM66 18h-60v-12h12v6h18v-6h30v12zM24 48v-6h-6v6h6zM24 60v-6h-6v6h6zM18 30v6h6v-6h-6z" />
<glyph glyph-name="book" unicode="&#xf007;"
d="M18 54h24v-6h-24v6zM18 36v6h24v-6h-24zM18 24v6h24v-6h-24zM84 54v-6h-24v6h24zM84 42v-6h-24v6h24zM84 30v-6h-24v6h24zM96 66v-54q0 -6 -6 -6h-33l-6 -6l-6 6h-33q-6 0 -6 6v54q0 6 6 6h33l6 -6l6 6h33q6 0 6 -6zM48 63l-3 3h-33v-54h36v51zM90 66h-33l-3 -3v-51h36
v54z" />
<glyph glyph-name="octoface" unicode="&#xf008;"
d="M88 52q8 -8 8 -20q0 -15 -6.5 -23.5t-16.5 -11.5t-25 -3q-23 0 -35.5 8t-12.5 30q0 12 8 20q-4 9 1 20q6 2 20 -8q7 2 19 2t19 -2q4 3 7.5 4.5t6 2.5t4 1h2.5q5 -11 1 -20zM48 0q12 0 18.5 1t12 5.5t5.5 13.5q0 7 -6 12q-3 3 -7 3.5t-12 0t-11 -0.5t-8.5 0.5t-8.5 0.5
t-7 -1t-6 -3q-6 -5 -6 -12q0 -13 9 -16.5t27 -3.5zM33 30q7 0 7 -10.5t-7 -10.5t-7 10.5t7 10.5zM63 30q7 0 7 -10.5t-7 -10.5t-7 10.5t7 10.5z" />
<glyph glyph-name="git-pull-request" unicode="&#xf009;"
d="M66 16q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v38q0 2 -2 4t-4 2h-6v-12l-18 18l18 18v-12h6q7 0 12.5 -5.5t5.5 -12.5v-38zM60 -1q7 0 7 7t-7 7t-7 -7t7 -7zM24 66q0 -7 -6 -10v-40q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 12 12 12t12 -12zM19 6
q0 7 -7 7t-7 -7t7 -7t7 7zM12 59q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="mark-github" unicode="&#xf00a;"
d="M48 84q20 0 34 -14t14 -34q0 -10 -4 -19.5t-11.5 -16t-17.5 -10.5q-3 0 -3 3v4.5v8.5q0 6 -3 9q22 2 22 24q0 7 -5 12q2 6 -1 13q-4 1 -13 -5q-6 2 -12 2t-12 -2q-4 3 -7.5 4t-4.5 1h-1q-3 -7 -1 -13q-4 -5 -4 -12q0 -22 21 -24q-2 -2 -3 -7q-9 -4 -14 4q-3 5 -7 5
q-3 0 -2.5 -1t2.5 -2q3 -2 5 -7q3 -8 16 -5v-6v-3q0 -3 -3 -3q-15 5 -24 17.5t-9 28.5q0 20 14 34t34 14z" />
<glyph glyph-name="cloud-download" unicode="&#xf00b;"
d="M54 12h12l-18 -18l-18 18h12v30h12v-30zM72 60q24 0 24 -21t-24 -21h-12v8h12q16 0 16 13t-16 13h-8v7q-3 11 -19 11q-7 0 -13 -5t-6 -11v-8h-8q-10 0 -10 -10t10 -10h18v-8h-18q-18 0 -18 18t18 18q0 9 8 16.5t19 7.5q10 0 16.5 -4t8.5 -8t2 -6z" />
<glyph glyph-name="cloud-upload" unicode="&#xf00c;"
d="M42 30h-12l18 18l18 -18h-12v-30h-12v30zM72 54q24 0 24 -21t-24 -21h-12v8h12q16 0 16 13t-16 13h-8v7q-3 11 -19 11q-7 0 -13 -5t-6 -11v-8h-8q-10 0 -10 -10t10 -10h18v-8h-18q-18 0 -18 18t18 18q0 9 8 16.5t19 7.5q10 0 16.5 -4t8.5 -8t2 -6z" />
<glyph glyph-name="keyboard" unicode="&#xf00d;"
d="M60 54h-6v6h6v-6zM18 48v-6h-6v6h6zM48 60v-6h-6v6h6zM24 60v-6h-12v6h12zM72 18v6h12v-6h-12zM48 42v6h6v-6h-6zM24 24v-6h-12v6h12zM72 60v-6h-6v6h6zM84 60v-6h-6v6h6zM72 30v18h12v-18h-12zM96 66v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6h84q6 0 6 -6zM90 66h-84
v-54h84v54zM36 42v6h6v-6h-6zM36 60v-6h-6v6h6zM24 42v6h6v-6h-6zM30 18v6h36v-6h-36zM60 42v6h6v-6h-6zM18 36v-6h-6v6h6zM48 36h6v-6h-6v6zM36 36h6v-6h-6v6zM30 36v-6h-6v6h6zM60 30v6h6v-6h-6z" />
<glyph glyph-name="gist" unicode="&#xf00e;"
d="M45 54l15 -15l-15 -15l-5 4l11 11l-11 11zM27 54l5 -4l-11 -11l11 -11l-5 -4l-15 15zM0 6v66q0 6 6 6h60q6 0 6 -6v-66q0 -6 -6 -6h-60q-6 0 -6 6zM6 6h60v66h-60v-66z" />
<glyph glyph-name="file-code" unicode="&#xf010;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-42v-72h60zM30 42l-9 -9l9 -9l-3 -6l-15 15l15 15zM45 48l15 -15l-15 -15l-3 6l9 9l-9 9z" />
<glyph glyph-name="file-text" unicode="&#xf011;"
d="M36 54h-24v6h24v-6zM12 36v6h42v-6h-42zM12 24v6h42v-6h-42zM12 12v6h42v-6h-42zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54z" />
<glyph glyph-name="file-media" unicode="&#xf012;"
d="M36 54h12v-12h-12v12zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-66l18 30l12 -24l12 12l18 -18v48z" />
<glyph glyph-name="file-zip" unicode="&#xf013;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-18v-6h-6v6h-18v-72h60zM30 60v6h6v-6h-6zM24 60h6v-6h-6v6zM30 48v6h6v-6h-6zM24 48h6v-6h-6v6zM30 36v6h6v-6h-6zM24 28v8h6v-6q12 0 12 -12v-6h-24v6q0 7 6 10zM36 24h-12v-6h12v6z" />
<glyph glyph-name="file-pdf" unicode="&#xf014;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM6 72v-56l6 4q2 1 4 1q0 1 1 2.5t2 4t3 4.5l6 16q-1 6 -2 11q0 5 1 9q0 2 1 3t2 1h-24zM33 43v0l-6 -14t-4 -7q6 2 11.5 3.5t10.5 1.5q-3 2 -5 4q-5 5 -7 12zM66 0v0v18h-2l-8 2t-8 3q-5 -1 -9 -1q-6 -2 -9 -2
l-2 -1q-3 -1 -5 -2q-4 -8 -11 -14q-2 -2 -4 -3h1h57zM66 29v0v25l-18 18h-15q2 0 4 -1q1 -3 1 -6v-4q0 -6 -1 -12q2 -8 7 -14q3 -3 6 -4q4 0 8 1q2 -1 4 -1z" />
<glyph glyph-name="tag" unicode="&#xf015;"
d="M46 74l37 -37q4 -4 0 -8l-28 -28q-4 -4 -8 0l-37 37q-4 4 -4 10v15q0 6 4.5 10.5t10.5 4.5h15q6 0 10 -4zM14 41l37 -36l28 28l-36 37q-3 3 -7 3h-15q-10 0 -10 -10v-15q0 -4 3 -7zM18 66h12v-12h-12v12z" />
<glyph glyph-name="file-directory" unicode="&#xf016;"
d="M78 60q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM36 60v6h-30v-6h30z" />
<glyph glyph-name="file-submodule" unicode="&#xf017;"
d="M60 42v-6h24v-30q0 -6 -6 -6h-54v42h36zM54 30v6h-24v-6h24zM78 60q6 0 6 -6v-12h-18q0 6 -6 6h-36q-6 0 -6 -6v-42h-12q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM36 60v6h-30v-6h30z" />
<glyph glyph-name="person" unicode="&#xf018;"
d="M72 0q0 -6 -6 -6h-60q-6 0 -6 6v6q0 7 6 13t12 9l6 2q1 2 0 6q-6 4 -6 24q1 18 18 18t18 -18q0 -20 -6 -24v-6q24 -8 24 -24v-6z" />
<glyph glyph-name="jersey" unicode="&#xf019;"
d="M27 48h12l3 -3v-30l-3 -3h-12l-3 3v30zM36 18v24h-6v-24h6zM73.5 61.5q1.5 -12.5 10.5 -13.5v-54q0 -2 -2 -4t-4 -2h-66q-2 0 -4 2t-2 4v54q9 1 10 14q2 12 2 22h18q0 -2 2 -4t7 -2t7 2t2 4h18q0 -10 1.5 -22.5zM78 -6v48q-7 5 -10 16q-2 7 -2 20h-6q0 -7 -3 -12
q-3 -6 -12 -6t-12 6q-3 5 -3 12h-6q0 -14 -2 -22q-2 -9 -10 -14v-48h66zM51 48h12l3 -3v-30l-3 -3h-12l-3 3v30zM60 18v24h-6v-24h6z" />
<glyph glyph-name="git-commit" unicode="&#xf01f;"
d="M65 42h19v-12h-19q-5 -18 -23 -18t-23 18h-19v12h19q5 18 23 18t23 -18zM42 23q5 0 9 4t4 9t-4 9t-9 4t-9 -4t-4 -9t4 -9t9 -4z" />
<glyph glyph-name="git-branch" unicode="&#xf020;"
d="M60 54q0 -7 -6 -10q-1 -12 -8 -19t-16 -7q-3 0 -6 -1l-1.5 -1.5l-1.5 -1.5q3 -3 3 -8q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 5 3.5 8.5t8.5 3.5t8.5 -3.5t3.5 -8.5q0 -7 -6 -10v-29q4 3 12 3q5 0 8.5 3.5t3.5 8.5v2q-6 3 -6 10q0 12 12 12t12 -12zM12 73
q-7 0 -7 -7t7 -7t7 7t-7 7zM12 -1q7 0 7 7t-7 7t-7 -7t7 -7zM48 47q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="git-merge" unicode="&#xf023;"
d="M60 42q12 0 12 -12t-12 -12q-7 0 -10 6q-11 0 -18.5 4t-13.5 10v-22q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v40q-6 3 -6 10q0 3 1.5 6t4.5 4.5t6 1.5q5 0 8.5 -3.5t3.5 -8.5q0 -6 -4 -9q4 -9 11 -15q8 -6 19 -6q3 6 10 6zM19 6q0 7 -7 7t-7 -7t7 -7t7 7zM12 59
q7 0 7 7t-7 7t-7 -7t7 -7zM60 23q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="mirror" unicode="&#xf024;"
d="M93 56q3 -2 3 -5v-63l-45 24l-45 -24v63q0 3 3 5l42 28zM90 -3v54l-36 24v-27h-6v27l-36 -24v-54l36 19v8h6v-8zM36 42h30v12l18 -18l-18 -18v12h-30v-12l-18 18l18 18v-12z" />
<glyph glyph-name="issue-opened" unicode="&#xf026;"
d="M42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM48 60v-30h-12v30h12zM48 24v-12h-12v12h12z" />
<glyph glyph-name="issue-reopened" unicode="&#xf027;"
d="M48 30h-12v30h12v-30zM36 12v12h12v-12h-12zM74 24h10v-24l-10 10q-12 -16 -32 -16q-17 0 -29.5 12.5t-12.5 29.5v6h8v-6q0 -14 10 -24t24 -10q17 0 27 13l-9 9h14zM10 48h-10v24l10 -10q12 16 32 16q17 0 29.5 -12.5t12.5 -29.5v-6h-8v6q0 14 -10 24t-24 10
q-17 0 -27 -13l9 -9h-14z" />
<glyph glyph-name="issue-closed" unicode="&#xf028;"
d="M42 24h12v-12h-12v12zM54 60v-30h-12v30h12zM63 51l9 -9l18 21l6 -6l-24 -27l-15 15zM48 2q12 0 21 7t12 18l9 9q0 -17 -12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5q20 0 33 -15l-6 -6q-10 13 -27 13q-14 0 -24 -10t-10 -24t10 -24t24 -10z" />
<glyph glyph-name="star" unicode="&#xf02a;"
d="M84 48l-22 -20l6 -28l-26 14l-26 -14l6 28l-22 20l29 4l13 26l13 -26z" />
<glyph glyph-name="comment" unicode="&#xf02b;"
d="M84 78q6 0 6 -6v-48q0 -6 -6 -6h-39l-21 -21v21h-12q-6 0 -6 6v48q0 6 6 6h72zM84 24v48h-72v-48h18v-12l12 12h42z" />
<glyph glyph-name="question" unicode="&#xf02c;"
d="M36 24h12v-12h-12v12zM60 45q0 -6 -3 -9.5t-6 -4.5l-3 -1h-12q0 6 6 6h3q3 0 3 3v6q0 3 -3 3h-6q-3 0 -3 -3v-3h-12q0 7 5.5 12.5t12.5 5.5q18 0 18 -15zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5
t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" />
<glyph glyph-name="alert" unicode="&#xf02d;"
d="M53 75l41 -72q2 -3 0.5 -6t-5.5 -3h-82q-4 0 -5.5 3t0.5 6l41 72q1 3 4.5 3t5.5 -3zM54 6v12h-12v-12h12zM54 24v24h-12v-24h12z" />
<glyph glyph-name="search" unicode="&#xf02e;"
d="M94 4q4 -4 0 -8q-1 -2 -3.5 -2t-4.5 2l-23 23q-10 -7 -21 -7q-15 0 -25.5 10.5t-10.5 25.5t10.5 25.5t25.5 10.5t25.5 -10.5t10.5 -25.5q0 -11 -7 -21zM42 20q12 0 20 8t8 20t-8 20t-20 8t-20 -8t-8 -20t8 -20t20 -8z" />
<glyph glyph-name="gear" unicode="&#xf02f;"
d="M84 31v1l-12 -5l-2 -6l5 -11l-7 -7l-11 5l-6 -2l-4 -12h-10l-4 12l-6 2l-11 -5l-7 7l5 11l-2 6l-12 4v10l12 4l2 6l-5 11l7 7l11 -5l6 2l4 12h10l4 -12l6 -2l11 5l7 -7l-5 -11l2 -6l12 -4v-10zM42 18q7 0 12.5 5.5t5.5 12.5t-5.5 12.5t-12.5 5.5t-12.5 -5.5t-5.5 -12.5
t5.5 -12.5t12.5 -5.5z" />
<glyph glyph-name="radio-tower" unicode="&#xf030;"
d="M29 47.5q-3 -2.5 -6 -0.5q-5 6 -5 13t5 13q1 1 3 1t3 -1q2 -3 -0.5 -6t-2.5 -7t3 -7t0 -5.5zM14 81q3 -3 0 -6q-6 -6 -6 -15t6 -15q3 -3 0 -6t-6 0q-8 9 -8 21t8 21q2 1 3.5 1t2.5 -1zM48 50q-10 0 -10 10t10 10t10 -10t-10 -10zM88 81q8 -9 8 -21t-8 -21q-2 -1 -3.5 -1
t-2.5 1q-3 3 0 6q6 6 6 15t-6 15q-3 3 0 6t6 0zM48 42q4 0 7 2l19 -50h-9l-5 6h-24l-5 -6h-9l19 50q3 -2 7 -2zM48 40l-6 -22h12zM36 6h24l-6 6h-12zM67 72.5q3 2.5 6 0.5q5 -6 5 -13t-5 -13q-1 -1 -3 -1t-3 1q-2 3 0.5 6t2.5 7t-3 7t0 5.5z" />
<glyph glyph-name="tools" unicode="&#xf031;"
d="M27 40q-12 -4 -21 6q-8 8 -5 20l11 -12l12 3l3 12l-12 12q12 3 20 -5.5t5 -20.5l3 -3l-10 -11l5 -5l-3 -4zM66 29l22 -24q3 -3 3 -7t-3 -7t-7 -3t-6 3l-23 24zM96 69l-43 -45l-6 6l-26 -27l-3 -6l-13 -9l-2 2l8 14l6 3l26 27l-5 5l43 45z" />
<glyph glyph-name="sign-out" unicode="&#xf032;"
d="M72 30v12h-24v12h24v12l24 -18zM60 12v24h6v-24q0 -6 -6 -6h-24v-18l-33 16q-3 2 -3 6v68q0 6 6 6h54q6 0 6 -6v-18h-6v18h-48l24 -12v-54h24z" />
<glyph glyph-name="rocket" unicode="&#xf033;"
d="M73 61q2 -2 5 -3.5t6 -2.5q-3 -6 -6 -10q-4 -5 -9 -10q-2 -2 -15 -11v-18l-18 -18v18l12 12q-2 -1 -6.5 -2.5l-7.5 -2.5l-4 -1l-6 6q-1 1 6 18l-12 -12h-18l18 18h18q10 14 11 15q5 5 10 8.5t10 6.5l2 -6q2 -3 4 -5zM96 84q-1 -2 -2 -6q-2 -7 -6 -16q-7 0 -10.5 4
t-3.5 10q10 5 16 6l6 2v0z" />
<glyph glyph-name="rss" unicode="&#xf034;"
d="M12 6h-12v12q12 0 12 -12zM0 66q25 0 42.5 -17.5t17.5 -42.5h-6q0 22 -16 38t-38 16v6zM0 42q15 0 25.5 -10.5t10.5 -25.5h-6q0 12 -9 21t-21 9v6z" />
<glyph glyph-name="clippy" unicode="&#xf035;"
d="M12 6h24v-6h-24v6zM42 42v-6h-30v6h30zM54 24h30v-12h-30v-12l-18 18l18 18v-12zM27 30v-6h-15v6h15zM12 12v6h15v-6h-15zM66 6h6v-12q0 -3 -2 -4.5t-4 -1.5h-60q-6 0 -6 6v66q0 6 6 6h18q0 12 12 12t12 -12h18q6 0 6 -6v-30h-6v18h-60v-54h60v12zM12 54h48q0 6 -6 6h-6
q-6 0 -6 6t-6 6t-6 -6t-6 -6h-6q-6 0 -6 -6z" />
<glyph glyph-name="sign-in" unicode="&#xf036;"
d="M42 44v-32h24v24h6v-24q0 -6 -6 -6h-24v-18l-33 16q-3 2 -3 6v68q0 6 6 6h54q6 0 6 -6v-18h-6v18h-48l24 -12v-14l18 14v-12h24v-12h-24v-12z" />
<glyph glyph-name="organization" unicode="&#xf037;"
d="M96 6q0 -6 -6 -6h-42q-6 0 -6 6h-36q-6 0 -6 6q0 7 4.5 13t9.5 9l4 2q1 2 0 6q-6 5 -6 18q0 18 15 18t15 -18q0 -13 -6 -18v-6q9 -4 15 -13l9 7q1 2 0 6l-1 1q-5 4 -5 17q0 18 15 18t15 -18q0 -7 -0.5 -10.5t-1.5 -4.5t-4 -3v-6q18 -8 18 -24v0z" />
<glyph glyph-name="device-mobile" unicode="&#xf038;"
d="M54 84q6 0 6 -6v-84q0 -6 -6 -6h-48q-6 0 -6 6v84q0 6 6 6h48zM30 -8q8 0 8 8t-8 8t-8 -8t8 -8zM54 12v60h-48v-60h48z" />
<glyph glyph-name="unfold" unicode="&#xf039;"
d="M69 39l15 -15q0 -6 -6 -6h-24v6h21l-12 12h-42l-12 -12h21v-6h-24q-6 0 -6 6l15 15l-15 15q0 6 6 6h24v-6h-21l12 -12h42l12 12h-21v6h24q6 0 6 -6zM36 48v18h-12l18 18l18 -18h-12v-18h-12zM48 30v-18h12l-18 -18l-18 18h12v18h12z" />
<glyph glyph-name="check" unicode="&#xf03a;"
d="M72 54l-48 -48l-24 24l9 9l15 -15l39 39z" />
<glyph glyph-name="mail" unicode="&#xf03b;"
d="M0 60q0 6 6 6h72q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v48zM78 60h-72l36 -30zM6 51v-36l24 18zM12 12h60l-21 18l-9 -9l-9 9zM78 15v36l-24 -18z" />
<glyph glyph-name="mail-read" unicode="&#xf03c;"
d="M36 54h-12v6h12v-6zM54 48v-6h-30v6h30zM84 51v-51q0 -6 -6 -6h-72q-6 0 -6 6v51q0 3 3 5l9 7v3q0 6 6 6h7l17 12l17 -12h7q6 0 6 -6v-3l9 -7q3 -2 3 -5zM18 39l24 -15l24 15v27h-48v-27zM6 3l27 18l-27 18v-36zM72 0l-30 18l-30 -18h60zM78 39l-27 -18l27 -18v36z" />
<glyph glyph-name="arrow-up" unicode="&#xf03d;"
d="M30 66l30 -36h-18v-24h-24v24h-18z" />
<glyph glyph-name="arrow-right" unicode="&#xf03e;"
d="M60 36l-36 -30v18h-24v24h24v18z" />
<glyph glyph-name="arrow-down" unicode="&#xf03f;"
d="M42 42h18l-30 -36l-30 36h18v24h24v-24z" />
<glyph glyph-name="arrow-left" unicode="&#xf040;"
d="M36 66v-18h24v-24h-24v-18l-36 30z" />
<glyph glyph-name="pin" unicode="&#xf041;"
d="M60 77q0 2 2 2.5t3 -0.5l26 -26q1 -1 0.5 -3t-2.5 -2h-5l-6 3l-18 -27v-23q0 -2 -2 -2.5t-3 0.5l-19 19l-30 -24l24 30l-19 19q-1 1 -0.5 3t2.5 2h23l27 18l-3 6v5z" />
<glyph glyph-name="gift" unicode="&#xf042;"
d="M78 60q6 0 6 -6v-18h-6v-30q0 -6 -6 -6h-54q-6 0 -6 6v30h-6v18q0 6 6 6h8q-2 3 -2 5q-1 7 3 10q3 3 9 3q5 0 9 -3t6 -8q2 5 6 8t9 3h1q5 0 8 -3t3 -10q0 -2 -2 -5h8zM49 65l-2 -5h17q3 4 3 6q0 4 -2 6q-1 1 -4 1h-1q-3 0 -6 -2t-5 -6zM25 72q-2 -2 -2 -6q0 -2 3 -6h17
l-2 5q-2 4 -5 6t-6 2q-4 0 -5 -1zM42 6v30h-24v-30h24zM42 42v12h-30v-12h30zM72 6v30h-24v-30h24zM78 42v12h-30v-12h30z" />
<glyph glyph-name="graph" unicode="&#xf043;"
d="M96 0v-6h-96v90h6v-84h90zM30 6h-12v30h12v-30zM54 6h-12v60h12v-60zM78 6h-12v42h12v-42z" />
<glyph glyph-name="triangle-left" unicode="&#xf044;"
d="M36 72v-72l-36 36z" />
<glyph glyph-name="credit-card" unicode="&#xf045;"
d="M72 30h-60v6h60v-6zM96 66v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6h84q6 0 6 -6zM90 48h-84v-36h84v36zM90 66h-84v-6h84v6zM36 24v-6h-24v6h24z" />
<glyph glyph-name="clock" unicode="&#xf046;"
d="M48 36h18v-12h-24q-6 0 -6 6v30h12v-24zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5z" />
<glyph glyph-name="ruby" unicode="&#xf047;"
d="M78 48l-30 -30v42h18zM96 48l-48 -48l-48 48l24 24h48zM48 9l39 39l-18 18h-42l-18 -18z" />
<glyph glyph-name="broadcast" unicode="&#xf048;"
d="M54 30q6 0 6 -6v-12h-6v-18q0 -6 -6 -6h-6q-6 0 -6 6v18h-6v12q0 6 6 6h6q-6 0 -6 6v6q0 6 6 6h6q6 0 6 -6v-6q0 -6 -6 -6h6zM42 42v-6h6v6h-6zM54 18v6h-18v-6h6v-24h6v24h6zM67 39q0 9 -6.5 15.5t-15.5 6.5t-15.5 -6.5t-6.5 -15.5q0 -3 1 -5v-12q-6 8 -6 17q0 11 8 19
t19 8q7 0 13.5 -3.5t10 -10t3.5 -13.5q0 -9 -6 -17v12q1 3 1 5zM90 39q0 -27 -24 -40v7q19 11 19 33q0 16 -12 28t-28 12t-28 -12t-12 -28q0 -22 19 -33v-7q-24 13 -24 40q0 19 13 32t32 13t32 -13t13 -32z" />
<glyph glyph-name="key" unicode="&#xf049;"
d="M77 71q7 -7 7 -17t-7 -17t-17 -7q-3 0 -5 1l-7 -7h-12v-6h-6v-6h-6v-6l-6 -6h-12l-6 6v6l37 37q-1 2 -1 5q0 10 7 17t17 7t17 -7zM66 52q8 0 8 8t-8 8t-8 -8t8 -8z" />
<glyph glyph-name="repo-force-push" unicode="&#xf04a;"
d="M60 30h-12v-42h-12v42h-12l14 18h-14l18 24l18 -24h-14zM66 84q6 0 6 -6v-72q0 -6 -6 -6h-12v6h12v12h-12v6h12v54h-54v-54h18v-6h-24v-12h24v-6h-24q-6 0 -6 6v72q0 6 6 6h60z" />
<glyph glyph-name="repo-clone" unicode="&#xf04c;"
d="M90 84q6 0 6 -6v-36q0 -6 -6 -6h-18v-6h-6v6h-6q-6 0 -6 6v42h36zM66 42v6h-6v-6h6zM90 42v6h-18v-6h18zM90 54v24h-24v-24h24zM24 54h-6v6h6v-6zM24 66h-6v6h6v-6zM12 78v-54h60v-18q0 -6 -6 -6h-30v-12l-9 9l-9 -9v12h-12q-6 0 -6 6v72q0 6 6 6h42v-6h-36zM66 18h-60
v-12h12v6h18v-6h30v12zM18 36h6v-6h-6v6zM24 42h-6v6h6v-6z" />
<glyph glyph-name="diff" unicode="&#xf04d;"
d="M36 42h12v-6h-12v-12h-6v12h-12v6h12v12h6v-12zM18 6v6h30v-6h-30zM45 72l21 -21v-57q0 -6 -6 -6h-54q-6 0 -6 6v72q0 6 6 6h39zM60 48l-18 18h-36v-72h54v54zM51 84l27 -27v-51h-6v48l-24 24h-30v6h33z" />
<glyph glyph-name="eye" unicode="&#xf04e;"
d="M48 72q9 0 17 -3.5t13 -9t9.5 -11t6.5 -8.5l2 -4q-2 -4 -6 -10t-16 -16t-26 -10q-8 0 -16 3.5t-13.5 9t-10 11t-6.5 8.5l-2 4q2 4 6 10t16.5 16t25.5 10zM48 12q10 0 17 7t7 17t-7 17t-17 7t-17 -7t-7 -17t7 -17t17 -7zM60 36q0 -12 -12 -12t-12 12t12 12t12 -12z" />
<glyph glyph-name="comment-discussion" unicode="&#xf04f;"
d="M90 78q6 0 6 -6v-36q0 -6 -6 -6h-6v-18l-18 18h-6v-12q0 -6 -6 -6h-24l-18 -18v18h-6q-6 0 -6 6v36q0 6 6 6h24v12q0 6 6 6h54zM54 18v12h-18q-6 0 -6 6v18h-24v-36h12v-9l9 9h27zM90 36v36h-54v-36h33l9 -9v9h12z" />
<glyph glyph-name="mail-reply" unicode="&#xf051;"
d="M36 69v-18q15 -2 25.5 -13.5t10.5 -30.5q-3 13 -14.5 19.5t-21.5 6.5v-18l-36 27z" />
<glyph glyph-name="primitive-dot" unicode="&#xf052;"
d="M0 36q0 10 7 17t17 7t17 -7t7 -17t-7 -17t-17 -7t-17 7t-7 17z" />
<glyph glyph-name="primitive-square" unicode="&#xf053;"
d="M48 12h-48v48h48v-48z" />
<glyph glyph-name="device-camera" unicode="&#xf056;"
d="M90 66q6 0 6 -6v-54q0 -6 -6 -6h-84q-6 0 -6 6v54q0 6 6 6q0 6 6 6h24q6 0 6 -6h48zM36 54v6h-24v-6h24zM63 12q9 0 15 6t6 15t-6 15t-15 6t-15 -6t-6 -15t6 -15t15 -6zM78 33q0 -15 -15 -15q-6 0 -10.5 4.5t-4.5 10.5t4.5 10.5t10.5 4.5t10.5 -4.5t4.5 -10.5z" />
<glyph glyph-name="device-camera-video" unicode="&#xf057;"
d="M91 71q2 2 3.5 1t1.5 -3v-60q0 -2 -1.5 -3t-3.5 1l-31 21v-16q0 -6 -6 -6h-48q-6 0 -6 6v54q0 6 6 6h48q6 0 6 -6v-16z" />
<glyph glyph-name="pencil" unicode="&#xf058;"
d="M0 12l48 48l18 -18l-48 -48h-18v18zM18 0v6h-6v6h-6v-12h12zM80 56l-8 -8l-18 18l8 8q4 4 8 0l10 -10q4 -4 0 -8z" />
<glyph glyph-name="info" unicode="&#xf059;"
d="M38 50q-2 2 -2 4.5t2 4t4.5 1.5t4 -2t1.5 -4.5t-2 -3.5q-2 -2 -4 -2t-4 2zM48 36v-18h6q0 -2 -2 -4t-4 -2h-6q-2 0 -4 2t-2 4v18h-6q0 2 2 4t4 2h6q2 0 4 -2t2 -4zM42 70q-14 0 -24 -10t-10 -24t10 -24t24 -10t24 10t10 24t-10 24t-24 10zM42 78q17 0 29.5 -12.5
t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 30t12.5 29.5t29.5 12z" />
<glyph glyph-name="triangle-right" unicode="&#xf05a;"
d="M0 0v72l36 -36z" />
<glyph glyph-name="triangle-down" unicode="&#xf05b;"
d="M0 54h72l-36 -36z" />
<glyph glyph-name="link" unicode="&#xf05c;"
d="M24 30h6v-6h-6q-7 0 -12.5 6.5t-5.5 14.5t5.5 14.5t12.5 6.5h24q7 0 12.5 -6.5t5.5 -14.5q0 -14 -12 -19v6q6 5 6 13q0 6 -4 10.5t-8 4.5h-24q-4 0 -8 -4.5t-4 -10.5t3.5 -10.5t8.5 -4.5zM78 48q7 0 12.5 -6.5t5.5 -14.5t-5.5 -14.5t-12.5 -6.5h-24q-7 0 -12.5 6.5
t-5.5 14.5q0 14 12 19v-6q-6 -5 -6 -13q0 -6 4 -10.5t8 -4.5h24q4 0 8 4.5t4 10.5t-3.5 10.5t-8.5 4.5h-6v6h6z" />
<glyph glyph-name="plus" unicode="&#xf05d;"
d="M72 30h-30v-30h-12v30h-30v12h30v30h12v-30h30v-12z" />
<glyph glyph-name="three-bars" unicode="&#xf05e;"
d="M68 30h-64q-4 0 -4 6t4 6h64q4 0 4 -6t-4 -6zM68 54h-64q-4 0 -4 6t4 6h64q4 0 4 -6t-4 -6zM4 18h64q4 0 4 -6t-4 -6h-64q-4 0 -4 6t4 6z" />
<glyph glyph-name="code" unicode="&#xf05f;"
d="M57 66l27 -30l-27 -30l-9 9l21 21l-21 21zM27 66l9 -9l-21 -21l21 -21l-9 -9l-27 30z" />
<glyph glyph-name="location" unicode="&#xf060;"
d="M36 84q15 0 25.5 -9.5t10.5 -23.5q0 -12 -9 -28t-18 -25l-9 -10q-36 36 -36 63q0 14 10.5 23.5t25.5 9.5zM36 -3q30 32 30 54q0 11 -8.5 19t-21.5 8q-12 0 -21 -8t-9 -19q0 -22 30 -54zM48 51q0 -12 -12 -12t-12 12t12 12t12 -12z" />
<glyph glyph-name="list-unordered" unicode="&#xf061;"
d="M12 6q0 -6 -4 -6h-4q-4 0 -4 6t4 6h4q4 0 4 -6zM28 60q-4 0 -4 6t4 6h40q4 0 4 -6t-4 -6h-40zM8 42q4 0 4 -6t-4 -6h-4q-4 0 -4 6t4 6h4zM8 72q4 0 4 -6t-4 -6h-4q-4 0 -4 6t4 6h4zM68 42q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6h40zM68 12q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6
h40z" />
<glyph glyph-name="list-ordered" unicode="&#xf062;"
d="M72 6q0 -6 -4 -6h-40q-4 0 -4 6t4 6h40q4 0 4 -6zM28 60q-4 0 -4 6t4 6h40q4 0 4 -6t-4 -6h-40zM68 42q4 0 4 -6t-4 -6h-40q-4 0 -4 6t4 6h40zM12 78v-19h6v-5h-17v5h5v13h-4v4q4 1 6 2h4zM14 29h-1h4l1 -5h-18v3q10 10 10 13t-3 3q-1 0 -4 -2l-3 3q4 4 8 4q8 0 8 -8
q0 -4 -6 -11h4zM13 7q5 -2 5 -6q0 -7 -10 -7q-5 0 -8 3l3 4q2 -2 5 -2t3 2q0 3 -6 3v5q5 0 5 2t-2 2t-4 -1l-3 3q3 4 7 4q9 0 9 -7q0 -4 -4 -5z" />
<glyph glyph-name="quote" unicode="&#xf063;"
d="M37 63q-22 -14 -22 -35h3q6 0 10.5 -4t4.5 -10q0 -16 -15 -16q-18 0 -18 26q0 33 30 50zM79 63q-22 -14 -22 -35h3q4 0 7.5 -1.5t5.5 -5t2 -7.5q0 -16 -15 -16q-18 0 -18 26q0 33 30 50z" />
<glyph glyph-name="versions" unicode="&#xf064;"
d="M78 66q6 0 6 -6v-48q0 -6 -6 -6h-36q-6 0 -6 6v48q0 6 6 6h36zM72 18v36h-24v-36h24zM24 60h6v-6h-6v-36h6v-6h-6q-6 0 -6 6v36q0 6 6 6zM6 54h6v-6h-6v-24h6v-6h-6q-6 0 -6 6v24q0 6 6 6z" />
<glyph glyph-name="calendar" unicode="&#xf068;"
d="M78 72q6 0 6 -6v-66q0 -6 -6 -6h-66q-6 0 -6 6v66q0 6 6 6h6v-9q0 -3 3 -3h12q3 0 3 3v9h18v-9q0 -3 3 -3h12q3 0 3 3v9h6zM78 0v54h-66v-54h66zM30 66h-6v12h6v-12zM66 66h-6v12h6v-12zM36 42h-6v6h6v-6zM48 42h-6v6h6v-6zM60 42h-6v6h6v-6zM72 42h-6v6h6v-6zM24 30h-6
v6h6v-6zM36 30h-6v6h6v-6zM48 30h-6v6h6v-6zM60 30h-6v6h6v-6zM72 30h-6v6h6v-6zM24 18h-6v6h6v-6zM36 18h-6v6h6v-6zM48 18h-6v6h6v-6zM60 18h-6v6h6v-6zM72 18h-6v6h6v-6zM24 6h-6v6h6v-6zM36 6h-6v6h6v-6zM48 6h-6v6h6v-6zM60 6h-6v6h6v-6z" />
<glyph glyph-name="lock" unicode="&#xf06a;"
d="M24 6h-6v6h6v-6zM72 42v-42q0 -6 -6 -6h-60q-6 0 -6 6v42q0 6 6 6h6v12q0 10 7 17t17 7t17 -7t7 -17v-12h6q6 0 6 -6zM23 48h26v12q0 5 -3.5 9t-9 4t-9.5 -4t-4 -9v-12zM66 42h-54v-42h54v42zM24 36v-6h-6v6h6zM24 24v-6h-6v6h6z" />
<glyph glyph-name="diff-added" unicode="&#xf06b;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM36 30h-18v12h18v18h12v-18h18v-12h-18v-18h-12v18z" />
<glyph glyph-name="diff-removed" unicode="&#xf06c;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM66 30h-48v12h48v-12z" />
<glyph glyph-name="diff-modified" unicode="&#xf06d;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM24 36q0 7 5.5 12.5t12.5 5.5t12.5 -5.5t5.5 -12.5t-5.5 -12.5t-12.5 -5.5t-12.5 5.5t-5.5 12.5z" />
<glyph glyph-name="diff-renamed" unicode="&#xf06e;"
d="M36 30h-18v12h18v18l30 -24l-30 -24v18zM84 72v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72q6 0 6 -6zM78 72h-72v-72h72v72z" />
<glyph glyph-name="horizontal-rule" unicode="&#xf070;"
d="M6 42v-12h-6v36h6v-18h12v18h6v-36h-6v12h-12zM60 30h-6v12h6v-12zM60 48h-6v12h6v-12zM42 48h12v-6h-12v-12h-6v36h18v-6h-12v-12zM0 6v12h60v-12h-60z" />
<glyph glyph-name="arrow-small-right" unicode="&#xf071;"
d="M36 36l-24 -18v12h-12v12h12v12z" />
<glyph glyph-name="milestone" unicode="&#xf075;"
d="M48 72h-12v12h12v-12zM72 42h-60q-6 0 -6 6v12q0 6 6 6h60l12 -12zM48 60h-12v-12h12v12zM36 -12v48h12v-48h-12z" />
<glyph glyph-name="checklist" unicode="&#xf076;"
d="M96 33l-36 -36l-18 18l9 9l9 -9l27 27zM34 11l5 -5h-27q-6 0 -6 6v54q0 6 6 6h42q6 0 6 -6v-39l-5 5q-4 4 -8 0l-13 -13q-4 -4 0 -8zM24 60h30v6h-30v-6zM24 48h30v6h-30v-6zM24 36h18v6h-18v-6zM18 30h-6v-6h6v6zM18 42h-6v-6h6v6zM18 54h-6v-6h6v6zM18 66h-6v-6h6v6z
" />
<glyph glyph-name="megaphone" unicode="&#xf077;"
d="M60 78q6 0 6 -6v-66q0 -6 -6 -6q-2 0 -3 1q-2 1 -5.5 3.5t-8 5.5l-7.5 5v-21h-12v28q-4 1 -6 2q-18 0 -18 15t18 15q4 1 11.5 5.5t16.5 10.5t11 7q1 1 3 1zM60 6v66l-9 -6q-1 0 -2 -1l-1 -1v-50q1 0 2 -1l1 -1q7 -5 9 -6zM72 42h24v-6h-24v6zM72 30l24 -12v-6l-24 12v6z
M96 66v-6l-24 -12v6z" />
<glyph glyph-name="chevron-right" unicode="&#xf078;"
d="M45 36l-30 -30l-9 9l22 21l-22 21l9 9z" />
<glyph glyph-name="bookmark" unicode="&#xf07b;"
d="M54 84q6 0 6 -6v-90l-30 19l-30 -19v90q0 6 6 6h48zM49 58q2 2 0 2h-14l-4 13h-2l-4 -13h-14q-2 0 0 -2l11 -8l-4 -13q-1 -2 1 -1l11 8l11 -8h1.5t-0.5 1l-4 13z" />
<glyph glyph-name="settings" unicode="&#xf07c;"
d="M24 42h-6v30h6v-30zM18 0v18h6v-18h-6zM48 0v36h6v-36h-6zM78 0v12h6v-12h-6zM84 72v-36h-6v36h6zM54 72v-12h-6v12h6zM30 36q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18zM60 54q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18zM90 30q6 0 6 -6t-6 -6h-18q-6 0 -6 6t6 6h18z" />
<glyph glyph-name="dashboard" unicode="&#xf07d;"
d="M54 54h-6v6h6v-6zM78 36v-6h-6v6h6zM36 54v-6h-6v6h6zM30 36v-6h-6v6h6zM96 69l-36 -33v-6q0 -6 -6 -6h-6q-6 0 -6 6v6q0 6 6 6h6l39 30zM86 44l6 6q4 -8 4 -17q0 -19 -13 -32t-32 -13t-32 13t-13 32t13 32t32 13q14 0 25 -8l-5 -5q-9 5 -20 5q-15 0 -26 -11t-11 -26
t11 -26t26 -11q10 0 18.5 5t13.5 13.5t5 18.5q0 6 -2 11z" />
<glyph glyph-name="history" unicode="&#xf07e;"
d="M48 6h-12v42h30v-12h-18v-30zM42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5v6h8v-6q0 -14 10 -24t24 -10t24 10t10 24t-10 24t-24 10q-17 0 -27 -13l9 -9h-24v24l10 -10q12 16 32 16z" />
<glyph glyph-name="link-external" unicode="&#xf07f;"
d="M66 24h6v-18q0 -6 -6 -6h-60q-6 0 -6 6v60q0 6 6 6h18v-6h-18v-60h60v18zM36 72h36v-36l-14 14l-19 -20l-9 9l20 19z" />
<glyph glyph-name="mute" unicode="&#xf080;"
d="M48 67v-62q0 -3 -3 -4t-5 1l-22 22h-12q-6 0 -6 6v12q0 6 6 6h12l22 22q2 2 5 1t3 -4zM93 48l-12 -12l12 -12l-6 -6l-12 12l-12 -12l-6 6l12 12l-12 12l6 6l12 -12l12 12z" />
<glyph glyph-name="x" unicode="&#xf081;"
d="M45 36l22 -22l-9 -9l-22 22l-22 -22l-9 9l22 22l-22 22l9 9l22 -22l22 22l9 -9z" />
<glyph glyph-name="circle-slash" unicode="&#xf084;"
d="M42 78q17 0 29.5 -12.5t12.5 -29.5t-12.5 -29.5t-29.5 -12.5t-29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM42 70q-14 0 -24 -10t-10 -24q0 -11 7 -21l48 48q-10 7 -21 7zM42 2q14 0 24 10t10 24q0 11 -7 21l-48 -48q10 -7 21 -7z" />
<glyph glyph-name="pulse" unicode="&#xf085;"
d="M69 36h15v-12h-20l-10 9l-22 -31l-5 33l-5 -11h-22v12h14l19 38l7 -41l13 19z" />
<glyph glyph-name="sync" unicode="&#xf087;"
d="M61 40l11 -2q1 -16 -10 -27q-10 -10 -23.5 -10.5t-24.5 7.5l-7 -8l-4 25l26 -3l-7 -7q17 -12 32 3q9 9 7 22zM18 54q-9 -9 -7 -22l-11 2q-1 16 10 27q10 10 23.5 10.5t24.5 -7.5l7 8l4 -25l-26 3l7 7q-17 12 -32 -3z" />
<glyph glyph-name="telescope" unicode="&#xf088;"
d="M48 30l18 -36h-6l-12 24v-30h-6v36l-12 -30h-6l12 30zM42 84v-6h-6v6h6zM30 66v-6h-6v6h6zM12 78v-6h-6v6h6zM4 30l7 5l7 -12l-8 -4q-3 -1 -4 1l-3 6q-1 2 1 4zM51 62l11 -18l-38 -18l-8 13zM76 55q2 -3 -1 -5l-8 -3l-11 19l7 5q3 2 5 -1z" />
<glyph glyph-name="gist-secret" unicode="&#xf08c;"
d="M48 21l6 -21h-24l6 21l-4 9h20zM60 48l12 -6h-60l12 6h36zM54 72l6 -18h-36l6 18l12 -6zM78 26q6 -2 4 -8l-3 -14q-1 -4 -6 -4h-19l12 18l-6 12zM24 30l-6 -12l12 -18h-19q-5 0 -6 4l-3 14q-2 6 4 8z" />
<glyph glyph-name="home" unicode="&#xf08d;"
d="M96 30h-12l-6 -30q0 -6 -6 -6h-48q-6 0 -6 6l-6 30h-12l48 48l18 -18v12h12v-24zM72 0l7 38l-31 31l-31 -31l7 -38h18v24h12v-24h18z" />
<glyph glyph-name="stop" unicode="&#xf08f;"
d="M60 78l24 -24v-36l-24 -24h-36l-24 24v36l24 24h36zM78 21v30l-21 21h-30l-21 -21v-30l21 -21h30zM36 60h12v-30h-12v30zM36 24h12v-12h-12v12z" />
<glyph glyph-name="bug" unicode="&#xf091;"
d="M66 24v-6l19 -6l-2 -6l-17 6v-6q0 -6 -6 -6h-6l-6 6v42h-6v-42l-6 -6h-6q-6 0 -6 6v6l-17 -6l-2 6l19 6v6h-18v6h18v6l-19 6l2 6l17 -6v6q0 6 6 6v6q0 5 5 6l-6 6h-11v6h13l12 -12h4l12 12h13v-6h-11l-6 -6q5 -1 5 -6v-6q6 0 6 -6v-6l17 6l2 -6l-19 -6v-6h18v-6h-18z
M54 54v6h-18v-6h18z" />
<glyph glyph-name="logo-github" unicode="&#xf092;"
d="M40 58h-1h1v0zM40 58v0v-3v-1h-3q-6 0 -6 6v7h-3v3l3 1v5h5v-5h3h1v-4h-1h-3v-7q0 -2 2 -2h1h1zM90 63q0 5 -3 4l-2 -1v-7q1 -1 2 -1q3 0 3 5zM95 63q0 -9 -6 -9l-6 2v-1v-1h-3l-1 1v23l1 1h4l1 -1v-8q1 2 4 2q6 0 6 -9zM77 71v0v-16v-1h-3l-1 1v1q-2 -2 -5 -2q-6 0 -6 6
v11h5v-10q0 -3 2 -3l3 1v12h5zM26 71v0v-16v-1h-4q-1 0 -1 1v16h1h4zM24 78q3 0 3 -3t-3 -3t-3 3t3 3zM59 79v-1v-23v-1h-4l-1 1v10h-7v-10v-1h-5v1v23v1h5v-1v-8h7v8l1 1h4zM19 68v-12q-3 -2 -7 -2q-12 0 -12 13t11 13q5 0 7 -2l-1 -4q-3 1 -5 1q-7 0 -7 -8t6 -8h3v5h-4v4
v1h8z" />
<glyph glyph-name="file-binary" unicode="&#xf094;"
d="M24 12h6v-6h-18v6h6v12h-6v6h12v-18zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54zM48 60v-18h6v-6h-18v6h6v12h-6v6h12zM12 60h18v-24h-18v24zM18 42h6v12h-6v-12zM36 30h18v-24h-18v24zM42 12h6v12h-6v-12z" />
<glyph glyph-name="database" unicode="&#xf096;"
d="M36 -6q-36 0 -36 12v12q0 1 1 3q7 -9 35 -9t35 9q1 -2 1 -3v-12q0 -12 -36 -12zM36 18q-36 0 -36 12v12q0 1 1 2v1q7 -9 35 -9t35 9v-1q1 -1 1 -2v-12q0 -12 -36 -12zM36 42q-36 0 -36 12v6v6q0 12 36 12t36 -12v-6v-6q0 -12 -36 -12zM36 72q-24 0 -24 -6t24 -6t24 6
t-24 6z" />
<glyph glyph-name="server" unicode="&#xf097;"
d="M66 48q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 30v12h-6v-12h6zM24 30v12h-6v-12h6zM36 30v12h-6v-12h6zM48 30v12h-6v-12h6zM66 78q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 60v12h-6v-12h6zM24 60v12h-6v-12h6zM36 60v12h-6v-12h6z
M48 60v12h-6v-12h6zM66 66v6h-6v-6h6zM66 18q6 0 6 -6v-12q0 -6 -6 -6h-60q-6 0 -6 6v12q0 6 6 6h60zM12 0v12h-6v-12h6zM24 0v12h-6v-12h6zM36 0v12h-6v-12h6zM48 0v12h-6v-12h6z" />
<glyph glyph-name="diff-ignored" unicode="&#xf099;"
d="M78 78q6 0 6 -6v-72q0 -6 -6 -6h-72q-6 0 -6 6v72q0 6 6 6h72zM78 0v72h-72v-72h72zM27 12h-9v9l39 39h9v-9z" />
<glyph glyph-name="ellipsis" unicode="&#xf09a;"
d="M66 54q6 0 6 -6v-24q0 -6 -6 -6h-60q-6 0 -6 6v24q0 6 6 6h60zM24 30v12h-12v-12h12zM42 30v12h-12v-12h12zM60 30v12h-12v-12h12z" />
<glyph glyph-name="no-newline" unicode="&#xf09c;"
d="M96 54v-18q0 -6 -6 -6h-18v-12l-18 18l18 18v-12h12v12h12zM48 36q0 -10 -7 -17t-17 -7t-17 7t-7 17t7 17t17 7t17 -7t7 -17zM9 26l25 25q-5 3 -10 3q-7 0 -12.5 -5.5t-5.5 -12.5q0 -5 3 -10zM42 36q0 5 -3 10l-25 -25q5 -3 10 -3q7 0 12.5 5.5t5.5 12.5z" />
<glyph glyph-name="hubot" unicode="&#xf09d;"
d="M18 48h48q6 0 6 -6v-12q0 -6 -6 -6h-48q-6 0 -6 6v12q0 6 6 6zM66 38v4h-4l-8 -8l-8 8h-8l-8 -8l-8 8h-4v-4l8 -8h8l8 8l8 -8h8zM30 18h24v-6h-24v6zM42 72q17 0 29.5 -11.5t12.5 -27.5v-27q0 -6 -6 -6h-72q-6 0 -6 6v27q0 16 12.5 27.5t29.5 11.5zM78 6v27
q0 14 -10.5 24t-25.5 10t-25.5 -10t-10.5 -24v-27h72z" />
<glyph glyph-name="arrow-small-up" unicode="&#xf09f;"
d="M18 54l18 -24h-12v-12h-12v12h-12z" />
<glyph glyph-name="arrow-small-down" unicode="&#xf0a0;"
d="M24 42h12l-18 -24l-18 24h12v12h12v-12z" />
<glyph glyph-name="arrow-small-left" unicode="&#xf0a1;"
d="M24 42h12v-12h-12v-12l-24 18l24 18v-12z" />
<glyph glyph-name="chevron-up" unicode="&#xf0a2;"
d="M60 24l-9 -9l-21 23l-21 -23l-9 9l30 30z" />
<glyph glyph-name="chevron-down" unicode="&#xf0a3;"
d="M30 18l-30 30l9 9l21 -23l21 23l9 -9z" />
<glyph glyph-name="chevron-left" unicode="&#xf0a4;"
d="M33 66l9 -9l-22 -21l22 -21l-9 -9l-30 30z" />
<glyph glyph-name="triangle-up" unicode="&#xf0aa;"
d="M72 18h-72l36 36z" />
<glyph glyph-name="git-compare" unicode="&#xf0ac;"
d="M30 12v12l18 -18l-18 -18v12h-6q-7 0 -12.5 5.5t-5.5 12.5v38q-6 3 -6 10q0 12 12 12t12 -12q0 -7 -6 -10v-38q0 -2 2 -4t4 -2h6zM12 73q-7 0 -7 -7t7 -7t7 7t-7 7zM78 16q6 -3 6 -10q0 -12 -12 -12t-12 12q0 7 6 10v38q0 2 -2 4t-4 2h-6v-12l-18 18l18 18v-12h6
q7 0 12.5 -5.5t5.5 -12.5v-38zM72 -1q7 0 7 7t-7 7t-7 -7t7 -7z" />
<glyph glyph-name="logo-gist" unicode="&#xf0ad;"
d="M18 50v4h14v-22q-6 -2 -14 -2q-18 0 -18 23t18 23q7 0 12 -2v-4q-6 3 -12 3q-14 0 -14 -19.5t14 -19.5q7 0 9 1v15h-9zM43 36v0q0 -3 2 -3v-3q-6 0 -6 7v24h4v-25zM44 70q0 -3 -3 -3t-3 3t3 3t3 -3zM60 48v0q11 -1 11 -9q0 -9 -12 -9q-5 0 -9 2v3q4 -1 9 -1q8 0 8 5t-7 5
q-11 1 -11 8q0 9 12 9q5 0 8 -1v-4q-4 1 -8 1q-8 0 -8 -5q0 -4 7 -4zM93 57v0h-9v-18q0 -5 6 -5h2v-4h-3q-9 0 -9 8v19h-6v2l6 2v8l4 1v-9h9v-4z" />
<glyph glyph-name="file-symlink-file" unicode="&#xf0b0;"
d="M51 78l21 -21v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 0v54l-18 18h-42v-72h60zM36 57l24 -18l-24 -18v12q-9 0 -15.5 -4t-8.5 -14q0 15 6.5 22.5t17.5 7.5v12z" />
<glyph glyph-name="file-symlink-directory" unicode="&#xf0b1;"
d="M78 60q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h30q6 0 6 -6v-6h36zM6 66v-6h30v6h-30zM42 12l24 18l-24 18v-12q-11 0 -17.5 -7.5t-6.5 -22.5q2 10 8.5 14t15.5 4v-12z" />
<glyph glyph-name="squirrel" unicode="&#xf0b2;"
d="M72 78q10 0 17 -7t7 -17q0 -12 -7.5 -14.5t-10.5 2.5q-5 4 -8 -3q-2 -4 2 -9q6 -8 6 -15q0 -21 -30 -21h-36q0 6 6 6h6q-19 17 0 24q-7 0 -11.5 3t-6.5 3q-5 0 -4.5 3t4.5 3q2 0 8.5 -3t7.5 1q1 1 0.5 3.5t-3.5 2.5q-12 -2 -15 3q0 7 3 11.5t5 6.5l3 1l1 4q2 0 3 -2l2 2
l3 -4q7 0 15.5 -10t8.5 -28q1 6 1 11.5v9t-0.5 8t-0.5 7.5q0 8 7 13t17 5zM15 48q3 0 3 3t-3 3t-3 -3t3 -3z" />
<glyph glyph-name="globe" unicode="&#xf0b6;"
d="M42 78q17 0 29.5 -12.5t12.5 -29.5q0 -15 -9.5 -26.5t-23.5 -14.5l1.5 2t2.5 3q2 1 8 5q1 1 2 3l3 3q1 1 4.5 6.5t2.5 6.5q-1 2 -4.5 2h-3.5l-0.5 1.5t-1 2t-2.5 1t-5 1.5q-3 2 -6 1l-2 -1.5l-2 -1.5q-6 1 -6 4q0 2 -3 3v1q1 2 0 3l-3 -2t-4 1q-2 5 4 6q2 1 4 0.5
t2.5 -1.5t1.5 -1v2q-1 1 -1 2t1.5 2l1.5 1q-1 5 3 5q-1 1 0 2t1 0l2 2q-2 2 1 4q-4 3 -5 3q-1 1 -1.5 0.5t-1.5 0.5q-1 0 -1.5 0.5t-1.5 -0.5q1 -2 1 -3.5t-3 -0.5q0 1 -0.5 1t-1.5 1q-2 1 -1 2q1 0 2 0.5t0 1.5l1 1h-1q-2 0 -3.5 1l-1.5 1l-2 -1h-2q-5 2 -7 0l-7 -5l5 1
q1 0 1 -2.5v-3.5l-1 -1q0 -1 -1 -3t-1 -3t1 -5q2 -3 2 -4v-1q2 -3 2 -2.5t-1 2.5l-1 2h1l1 -2q0 -1 1 -1q1 -2 1 -3q0 -3 3 -4q6 -2 8 -3h1t1 -0.5t0.5 -1l1.5 -1.5q2 -2 3 -2l1 1q2 0 2 -1v-1.5v-0.5q-2 -5 -2 -6q1 -2 1 -3q1 -1 2 -3t3 -3q3 -2 -1 -11q-1 -1 -1 -3.5
t1 -2.5q-4 -1 -8 -1q-17 0 -29.5 12.5t-12.5 29.5t12.5 29.5t29.5 12.5zM52 39q-3 -1 -5 0l-4 2h-1l1 1q2 0 4.5 -1.5l2.5 -1.5l1 0.5t1 -0.5v0zM38 74l1 1v0h3zM45 68q2 0 1 2q0 1 -2 2h-1q0 1 -2 1h-2l1 -1q5 0 2 -3zM54 69q1 0 0 2q-1 1 -1 2q0 2 -4 3h-6q-1 -1 0 -2h1
q2 0 5 -2q4 -4 5 -3z" />
<glyph glyph-name="unmute" unicode="&#xf0ba;"
d="M72 36q0 -10 -7 -17l-4 4q5 5 5 13t-5 13l4 4q7 -7 7 -17zM46 70q2 2 5 1t3 -4v-62q0 -3 -3 -4t-5 1l-22 22h-12q-6 0 -6 6v12q0 6 6 6h12zM82 70q14 -14 14 -34t-14 -34l-4 4q12 12 12 29.5t-12 30.5zM74 61q10 -10 10 -25t-10 -26l-5 5q9 8 9 20.5t-9 21.5z" />
<glyph glyph-name="mention" unicode="&#xf0be;"
d="M39 -6q-17 0 -28 10.5t-11 29.5q0 22 14 36t33 14q17 0 27 -10.5t10 -27.5q0 -13 -7 -21.5t-16 -8.5q-10 0 -11 9q-7 -7 -14 -7q-14 0 -14 15q0 10 6.5 18.5t15.5 8.5q6 0 9 -5l1 4h6l-4 -23q-3 -13 6 -13q6 0 10.5 6.5t4.5 16.5t-3.5 17t-10.5 11t-17 4q-16 0 -28 -12
t-12 -31q0 -16 9.5 -25.5t24.5 -9.5q10 0 18 5l3 -5q-9 -6 -22 -6zM38 24q5 0 10 6l3 18q-3 5 -7 5q-6 0 -10.5 -6t-4.5 -13q0 -10 9 -10z" />
<glyph glyph-name="package" unicode="&#xf0c4;"
d="M6 58q0 5 4 6l40 11h2l40 -11q4 -1 4 -6v-44q0 -5 -4 -6l-40 -11h-2l-40 11q-4 1 -4 6v44zM48 4v40l-36 10v-41zM12 60l39 -10l15 4l-39 10zM90 13v41l-12 -3v-15l-12 -3v15l-12 -4v-40zM78 57l12 3l-39 10l-12 -3z" />
<glyph glyph-name="browser" unicode="&#xf0c5;"
d="M30 66v-6h6v6h-6zM18 66v-6h6v6h-6zM6 66v-6h6v6h-6zM78 6v48h-72v-48h72zM78 60v6h-36v-6h36zM84 66v-60q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h72q6 0 6 -6z" />
<glyph glyph-name="terminal" unicode="&#xf0c8;"
d="M42 24h24v-6h-24v6zM24 18l-4 4l13 14l-13 14l4 4l18 -18zM84 66v-60q0 -6 -6 -6h-72q-6 0 -6 6v60q0 6 6 6h72q6 0 6 -6zM78 66h-72v-60h72v60z" />
<glyph glyph-name="markdown" unicode="&#xf0c9;"
d="M89 66q7 0 7 -7v-46q0 -7 -7 -7h-82q-7 0 -7 7v46q0 7 7 7h82zM54 18v36h-12l-9 -12l-9 12h-12v-36h12v18l9 -12l9 12v-18h12zM72 15l15 21h-9v18h-12v-18h-9z" />
<glyph glyph-name="dash" unicode="&#xf0ca;"
d="M0 42h48v-12h-48v12z" />
<glyph glyph-name="fold" unicode="&#xf0cc;"
d="M42 30l18 -18h-12v-18h-12v18h-12zM60 66l-18 -18l-18 18h12v18h12v-18h12zM84 54l-15 -15l15 -15q0 -6 -6 -6h-15l-6 6h18l-12 12h-42l-12 -12h18l-6 -6h-15q-6 0 -6 6l15 15l-15 15q0 6 6 6h15l6 -6h-18l12 -12h42l12 12h-18l6 6h15q6 0 6 -6z" />
<glyph glyph-name="inbox" unicode="&#xf0cf;"
d="M84 30v-30q0 -6 -6 -6h-72q-6 0 -6 6v30l7 43q1 5 6 5h58q5 0 6 -5zM64 27q2 3 6 3h8l-6 42h-60l-6 -42h8q4 0 6 -3l2 -6q2 -3 6 -3h28q4 0 6 3z" />
<glyph glyph-name="trashcan" unicode="&#xf0d0;"
d="M66 72q6 0 6 -6v-6q0 -6 -6 -6v-54q0 -6 -6 -6h-42q-6 0 -6 6v54q-6 0 -6 6v6q0 6 6 6h12q0 6 6 6h18q6 0 6 -6h12zM60 0v54h-6v-48h-6v48h-6v-48h-6v48h-6v-48h-6v48h-6v-54h42zM66 60v6h-54v-6h54z" />
<glyph glyph-name="paintcan" unicode="&#xf0d1;"
d="M36 84q15 0 25.5 -10.5t10.5 -25.5v-6q0 -6 -6 -6v-30q0 -12 -30 -12t-30 12v30q-6 0 -6 6v6q0 15 10.5 25.5t25.5 10.5zM54 24q6 0 6 6v11q-9 -5 -24 -5t-24 5v-11q0 -6 6 -6v-6q0 -6 6 -6t6 6v3q0 3 3 3t3 -3v-12q0 -3 3 -3t3 3v15q0 3 3 3t3 -3v-3q0 -3 3 -3t3 3v3z
M36 42q16 0 22 6q-6 6 -22 6t-22 -6q6 -6 22 -6zM36 60q30 0 30 -12q0 12 -9 21t-21 9t-21 -9t-9 -21q0 12 30 12z" />
<glyph glyph-name="flame" unicode="&#xf0d2;"
d="M30 82v0q15 -9 17 -21t-5 -16q-7 -7 0 -11q4 -2 7.5 0.5t3.5 7.5q-1 15 11 17q-2 -5 -1.5 -9.5t2.5 -7t4.5 -7.5t2.5 -10q0 -7 -3 -13.5t-9.5 -12.5t-16.5 -7q7 3 7 10q0 6 -4 9t-10 1t-10 3.5t-1 14.5q-11 -10 -10 -22.5t12 -17.5q-15 3 -21.5 12t-5.5 18t5 16
q4 5 12 11.5t10 8.5q9 10 3 26z" />
<glyph glyph-name="briefcase" unicode="&#xf0d3;"
d="M54 60h24q6 0 6 -6v-48q0 -6 -6 -6h-72q-6 0 -6 6v48q0 6 6 6h24v6q0 6 6 6h12q6 0 6 -6v-6zM36 66v-6h12v6h-12zM78 30v24h-6v-18h-60v18h-6v-24h30v-6h12v6h30z" />
<glyph glyph-name="plug" unicode="&#xf0d4;"
d="M84 48h-24v-18h24v-6h-24v-12h-12v6h-12q-9 0 -12 12l-6 6q-12 0 -12 -12v-12h-6v12q0 7 5.5 12.5t12.5 5.5l6 6q2 12 12 12h12v6h12v-12h24v-6z" />
<glyph glyph-name="circuit-board" unicode="&#xf0d6;"
d="M18 54q0 6 6 6t6 -6t-6 -6t-6 6zM66 54q0 -6 -6 -6t-6 6t6 6t6 -6zM66 18q0 -6 -6 -6t-6 6t6 6t6 -6zM78 78q6 0 6 -6v-72q0 -6 -6 -6h-54l18 18h7q3 -7 11 -7q6 0 10 5t2 11q-1 7 -9 9q-9 2 -14 -6h-13l-30 -30q-6 0 -6 6v72q0 6 6 6h12v-13q-9 -4 -6 -14q2 -7 9 -9
q9 -3 14 6h14q3 -7 11 -7q6 0 10 5t2 11q-1 7 -9 9q-9 2 -14 -6h-14q-2 3 -5 5v13h48z" />
<glyph glyph-name="mortar-board" unicode="&#xf0d7;"
d="M47 29v0h2l23 7v-15q0 -9 -24 -9t-24 9q0 2 -6 19l-4 14q3 -3 10 -18zM49 67l45 -14q2 -1 2 -2.5t-2 -1.5l-45 -15h-2l-29 10v-9q3 -2 3 -5q0 -2 -1 -3q1 -1 1 -3v-16q0 -2 -6 -2t-6 2v16q0 1 1 3q-1 1 -1 3q0 3 3 5v11l-10 3q-2 0 -2 1.5t2 2.5l45 14h2zM48 48q6 0 6 3
t-6 3t-6 -3t6 -3z" />
<glyph glyph-name="law" unicode="&#xf0d8;"
d="M42 60q-9 0 -9 9t9 9t9 -9t-9 -9zM84 24q0 -12 -12 -12h-6q-12 0 -12 12l12 24h-6q-6 0 -6 6h-6v-48q6 0 6 -6h6q6 0 6 -6h-48q0 6 6 6h6q0 6 6 6v48h-6q0 -6 -6 -6h-6l12 -24q0 -12 -12 -12h-6q-12 0 -12 12l12 24h-6v6h18q0 6 6 6h24q6 0 6 -6h18v-6h-6zM15 42l-9 -18
h18zM78 24l-9 18l-9 -18h18z" />
<glyph glyph-name="thumbsup" unicode="&#xf0da;"
d="M84 0l6 36q0 6 -6 6h-12q-6 0 -6 6v6q0 6 -4 15t-8 9q-2 0 -4 -2t-2 -4q3 -16 -5 -25q-10 -11 -19 -11v-36l10 -6h38q12 0 12 6zM84 48q12 0 12 -12v-1l-6 -36q-1 -11 -18 -11h-38q-2 0 -3 1l-9 5h-10q-12 0 -12 12v24q0 5 3.5 8.5t8.5 3.5h12q6 0 14 9q6 7 4 20
q-1 5 3 8q3 5 9 5q7 0 12.5 -11t5.5 -19v-6h12z" />
<glyph glyph-name="thumbsdown" unicode="&#xf0db;"
d="M96 37v-1q0 -12 -12 -12h-12v-6q0 -8 -5.5 -19t-12.5 -11q-6 0 -9 5q-4 3 -3 8q2 13 -4 20q-8 9 -14 9h-12q-12 0 -12 12v24q0 12 12 12h10l9 5q1 1 3 1h38q17 0 18 -11zM84 30q6 0 6 6l-6 36q0 6 -12 6h-38l-10 -6v-36q9 0 19 -11q8 -9 5 -25q0 -2 2 -4t4 -2t5 4.5t5 10
t2 9.5v6q0 6 6 6h12z" />
<glyph glyph-name="desktop-download" unicode="&#xf0dc;"
d="M24 48h18v36h12v-36h18l-24 -24zM90 72q6 0 6 -6v-54q0 -6 -6 -6h-32q3 -7 14 -12h-48q11 5 14 12h-32q-6 0 -6 6v54q0 6 6 6h24v-6h-24v-48h84v48h-24v6h24z" />
<glyph glyph-name="beaker" unicode="&#xf0dd;"
d="M86 -4q4 -8 -5 -8h-72q-3 0 -5 2.5t0 5.5l20 46v24h-6v6h54v-6h-6v-24zM22 24h45l-7 18v24h-30v-24zM48 36h6v-6h-6v6zM42 42h-6v6h6v-6zM42 60h6v-6h-6v6zM42 78h-6v6h6v-6z" />
<glyph glyph-name="bell" unicode="&#xf0de;"
d="M84 12v-6h-84v6l4 3q3 3 8 27q2 10 8 17.5t11 10.5l5 2q0 6 6 6t6 -6q20 -7 25 -30q5 -24 7 -27zM42 -12q-12 0 -12 12h24q0 -12 -12 -12z" />
<glyph glyph-name="watch" unicode="&#xf0e0;"
d="M36 36h12v-6h-18v24h6v-18zM72 36q0 -21 -18 -31v-11q0 -6 -6 -6h-24q-6 0 -6 6v11q-18 10 -18 31t18 31v11q0 6 6 6h24q6 0 6 -6v-11q18 -10 18 -31zM66 36q0 12 -9 21t-21 9t-21 -9t-9 -21t9 -21t21 -9t21 9t9 21z" />
<glyph glyph-name="shield" unicode="&#xf0e1;"
d="M42 84l42 -12v-36q0 -19 -16 -33.5t-26 -14.5t-26 14.5t-16 33.5v36zM30 18h24l-7 17q0 2 2 3q5 4 5 10q0 3 -1.5 6t-4.5 4.5t-6 1.5q-5 0 -8.5 -3.5t-3.5 -8.5q0 -6 5 -10q2 -1 2 -3z" />
<glyph glyph-name="bold" unicode="&#xf0e2;"
d="M6 72h23q26 0 26 -18q0 -12 -10 -15v-1q14 -3 14 -17q0 -21 -28 -21h-25v72zM28 42q14 0 14 10t-14 10h-9v-20h9zM30 10q16 0 16 12q0 11 -16 11h-11v-23h11z" />
<glyph glyph-name="text-size" unicode="&#xf0e3;"
d="M73 36l-8 28h-1l-8 -28h17zM30 30q-5 19 -6 22l-6 -22h12zM92 9h-12l-5 18h-21l-6 -18h-12l-3 13h-18l-3 -13h-12l18 51h13l12 -33l15 46h13z" />
<glyph glyph-name="italic" unicode="&#xf0e4;"
d="M17 54h12l-11 -54h-12zM19 70q0 8 8 8q7 0 7 -6q0 -8 -8 -8q-7 0 -7 6z" />
<glyph glyph-name="tasklist" unicode="&#xf0e5;"
d="M92 30h-46q-4 0 -4 6t4 6h46q4 0 4 -6t-4 -6zM58 60q-4 0 -4 6t4 6h34q4 0 4 -6t-4 -6h-34zM0 61l8 7l10 -9l25 25l8 -8l-33 -33zM46 12h46q4 0 4 -6t-4 -6h-46q-4 0 -4 6t4 6z" />
<glyph glyph-name="verified" unicode="&#xf0e6;"
d="M94 42q5 -6 0 -12l-6 -8q-2 -2 -2 -4l-2 -11q0 -7 -8 -8l-10 -1q-2 0 -4 -2l-8 -6q-6 -5 -12 0l-8 6q-2 2 -4 2l-11 2q-7 0 -8 8l-1 10q0 2 -2 4l-6 8q-5 6 0 12l6 8q2 2 2 4l2 11q0 7 8 8l10 1q2 0 4 2l8 6q6 5 12 0l8 -6q2 -2 4 -2l11 -2q7 0 8 -8l1 -10q0 -2 2 -4z
M39 12l39 39l-9 9l-30 -30l-12 12l-9 -9z" />
<glyph glyph-name="smiley" unicode="&#xf0e7;"
d="M48 84q20 0 34 -14t14 -34t-14 -34t-34 -14t-34 14t-14 34t14 34t34 14zM76.5 7.5q5.5 5.5 9 12.5t3.5 16t-3.5 16t-9 12.5t-12.5 9t-16 3.5t-16 -3.5t-12.5 -9t-9 -12.5t-3.5 -16t3.5 -16t9 -12.5t12.5 -9t16 -3.5t16 3.5t12.5 9zM24 43v4q0 7 7 7h4q7 0 7 -7v-4
q0 -7 -7 -7h-4q-7 0 -7 7zM54 43v4q0 7 7 7h4q7 0 7 -7v-4q0 -7 -7 -7h-4q-7 0 -7 7zM78 24q-7 -18 -30 -18t-30 18q-2 6 4 6h52q6 0 4 -6z" />
<glyph glyph-name="unverified" unicode="&#xf0e8;"
d="M94 42q5 -6 0 -12l-6 -8q-2 -2 -2 -4l-2 -11q0 -7 -8 -8l-10 -1q-2 0 -4 -2l-8 -6q-6 -5 -12 0l-8 6q-2 2 -4 2l-11 2q-7 0 -8 8l-1 10q0 2 -2 4l-6 8q-5 6 0 12l6 8q2 2 2 4l2 11q0 7 8 8l10 1q2 0 4 2l8 6q6 5 12 0l8 -6q2 -2 4 -2l11 -2q7 0 8 -8l1 -10q0 -2 2 -4z
M54 15v6q0 3 -3 3h-6q-3 0 -3 -3v-6q0 -3 3 -3h6q3 0 3 3zM63 44q1 1 1 4t-1 5t-3 4l-6 2t-7 1q-3 0 -6 -1t-5.5 -2.5t-3.5 -3.5q-2 -3 -2 -5h12q0 1 1 2l1 1l1 1h2q3 0 4 -1t1 -4q0 -1 -1 -3t-3 -3t-3 -2.5t-1 -2.5q-1 -2 -1 -3v-3h10v2t1 1q0 1 1 2t1 2l4 2q0 1 1.5 2.5
t1.5 2.5z" />
<glyph glyph-name="ellipses" unicode="&#xf101;"
d="M66 54q6 0 6 -6v-24q0 -6 -6 -6h-60q-6 0 -6 6v24q0 6 6 6h60zM24 30v12h-12v-12h12zM42 30v12h-12v-12h12zM60 30v12h-12v-12h12z" />
<glyph glyph-name="file" unicode="&#xf102;"
d="M36 54h-24v6h24v-6zM12 36v6h42v-6h-42zM12 24v6h42v-6h-42zM12 12v6h42v-6h-42zM72 57v-57q0 -6 -6 -6h-60q-6 0 -6 6v72q0 6 6 6h45zM66 54l-18 18h-42v-72h60v54z" />
<glyph glyph-name="grabber" unicode="&#xf103;"
d="M48 60v-6h-48v6h48zM0 36v6h48v-6h-48zM0 18v6h48v-6h-48z" />
<glyph glyph-name="plus-small" unicode="&#xf104;"
d="M24 42h18v-6h-18v-18h-6v18h-18v6h18v18h6v-18z" />
<glyph glyph-name="reply" unicode="&#xf105;"
d="M36 63q20 -2 34 -16.5t14 -43.5q-16 36 -48 36v-21l-33 33l33 33v-21z" />
<glyph glyph-name="device-desktop" unicode="&#xf27c;"
d="M90 72q6 0 6 -6v-54q0 -6 -6 -6h-32q3 -7 14 -12h-48q11 5 14 12h-32q-6 0 -6 6v54q0 6 6 6h84zM90 18v48h-84v-48h84z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 44 KiB

BIN
public/assets/octicons-4.3.0/octicons.ttf

Binary file not shown.

BIN
public/assets/octicons-4.3.0/octicons.woff

Binary file not shown.

BIN
public/assets/octicons-4.3.0/octicons.woff2

Binary file not shown.

40
public/css/gogs.css

@ -94,13 +94,13 @@ code.wrap {
.following.bar .top.menu .menu { .following.bar .top.menu .menu {
z-index: 900; z-index: 900;
} }
.following.bar .icon,
.following.bar .octicon {
margin-right: 5px !important;
}
.following.bar .head.link.item { .following.bar .head.link.item {
padding-right: 0 !important; padding-right: 0 !important;
} }
.following.bar .head.link.item .dropdown.icon,
.following.bar .head.link.item .menu .octicon {
margin-right: 5px;
}
.following.bar .avatar > .ui.image { .following.bar .avatar > .ui.image {
margin-right: 0; margin-right: 0;
} }
@ -398,12 +398,6 @@ footer .ui.language .menu {
width: 32px !important; width: 32px !important;
height: 32px !important; height: 32px !important;
} }
.octicon.icon,
.mega-octicon.icon {
font-family: octicons;
font-size: 16px;
opacity: 1 !important;
}
.sr-only { .sr-only {
position: absolute; position: absolute;
width: 1px; width: 1px;
@ -1133,6 +1127,10 @@ footer .ui.language .menu {
font-size: 12px; font-size: 12px;
white-space: nowrap; white-space: nowrap;
} }
.repository .head .octicon.octicon-repo-forked {
margin-top: -1px;
font-size: 15px;
}
.repository .navbar .ui.label { .repository .navbar .ui.label {
margin-top: -2px; margin-top: -2px;
margin-left: 7px; margin-left: 7px;
@ -1172,6 +1170,9 @@ footer .ui.language .menu {
.repository .header-wrapper .ui.tabs.divider { .repository .header-wrapper .ui.tabs.divider {
border-bottom: none; border-bottom: none;
} }
.repository .header-wrapper .ui.tabular .octicon {
margin-right: 5px;
}
.repository .filter.menu .label.color { .repository .filter.menu .label.color {
border-radius: 3px; border-radius: 3px;
margin-left: 15px; margin-left: 15px;
@ -1244,10 +1245,13 @@ footer .ui.language .menu {
.repository.file.list #repo-files-table thead .ui.avatar { .repository.file.list #repo-files-table thead .ui.avatar {
margin-bottom: 5px; margin-bottom: 5px;
} }
.repository.file.list #repo-files-table tbody .icon { .repository.file.list #repo-files-table tbody .octicon {
margin-left: 3px; margin-left: 3px;
margin-right: 5px; margin-right: 5px;
} }
.repository.file.list #repo-files-table tbody .octicon.octicon-mail-reply {
margin-right: 10px;
}
.repository.file.list #repo-files-table td { .repository.file.list #repo-files-table td {
padding-top: 8px; padding-top: 8px;
padding-bottom: 8px; padding-bottom: 8px;
@ -2521,10 +2525,6 @@ footer .ui.language .menu {
.dashboard.issues .ui.right .head.menu .item.active { .dashboard.issues .ui.right .head.menu .item.active {
color: #d9453d; color: #d9453d;
} }
.dashboard.feeds .head.menu .octicon,
.dashboard.issues .head.menu .octicon {
margin-right: 5px;
}
.feeds .news .ui.avatar { .feeds .news .ui.avatar {
margin-top: 13px; margin-top: 13px;
} }
@ -2566,7 +2566,6 @@ footer .ui.language .menu {
} }
.feeds .list .header .plus.icon { .feeds .list .header .plus.icon {
margin-top: 5px; margin-top: 5px;
margin-right: 0;
} }
.feeds .list ul { .feeds .list ul {
list-style: none; list-style: none;
@ -2584,9 +2583,14 @@ footer .ui.language .menu {
display: block; display: block;
} }
.feeds .list ul li a .octicon { .feeds .list ul li a .octicon {
margin-right: 6px;
color: #888; color: #888;
} }
.feeds .list ul li a .octicon.rear {
font-size: 15px;
}
.feeds .list ul li a .star-num {
font-size: 12px;
}
.feeds .list .repo-owner-name-list .item-name { .feeds .list .repo-owner-name-list .item-name {
max-width: 70%; max-width: 70%;
margin-bottom: -4px; margin-bottom: -4px;
@ -2671,7 +2675,7 @@ footer .ui.language .menu {
} }
.ui.repository.list .item .ui.header .metas { .ui.repository.list .item .ui.header .metas {
color: #888; color: #888;
font-size: 13px; font-size: 14px;
font-weight: normal; font-weight: normal;
} }
.ui.repository.list .item .ui.header .metas span:not(:last-child) { .ui.repository.list .item .ui.header .metas span:not(:last-child) {

16
public/less/_base.less

@ -82,12 +82,12 @@ pre, code {
.top.menu .menu { .top.menu .menu {
z-index: 900; z-index: 900;
} }
.icon,
.octicon {
margin-right: 5px !important;
}
.head.link.item { .head.link.item {
padding-right: 0 !important; padding-right: 0 !important;
.dropdown.icon,
.menu .octicon {
margin-right: 5px;
}
} }
.avatar > .ui.image { .avatar > .ui.image {
margin-right: 0; margin-right: 0;
@ -378,14 +378,6 @@ footer {
.generate-img(@n, (@i + 1)); .generate-img(@n, (@i + 1));
} }
// ensure Semantic UI .icon font family and 14px size does not apply to .icon.octicon
.octicon.icon,
.mega-octicon.icon {
font-family: octicons;
font-size: 16px;
opacity: 1 !important;
}
// Accessibility // Accessibility
.sr-only { .sr-only {
position: absolute; position: absolute;

14
public/less/_dashboard.less

@ -47,11 +47,6 @@
color: #d9453d; color: #d9453d;
} }
} }
.head.menu {
.octicon {
margin-right: 5px;
}
}
} }
} }
@ -102,7 +97,6 @@
.plus.icon { .plus.icon {
margin-top: 5px; margin-top: 5px;
margin-right: 0;
} }
} }
ul { ul {
@ -124,8 +118,14 @@
display: block; display: block;
.octicon { .octicon {
margin-right: 6px;
color: #888; color: #888;
&.rear {
font-size: 15px;
}
}
.star-num {
font-size: 12px;
} }
} }
} }

2
public/less/_explore.less

@ -29,7 +29,7 @@
.metas { .metas {
color: #888; color: #888;
font-size: 13px; font-size: 14px;
font-weight: normal; font-weight: normal;
span:not(:last-child) { span:not(:last-child) {
margin-right: 5px; margin-right: 5px;

12
public/less/_repository.less

@ -30,6 +30,10 @@
font-size: 12px; font-size: 12px;
white-space: nowrap; white-space: nowrap;
} }
.octicon.octicon-repo-forked {
margin-top: -1px;
font-size: 15px;
}
} }
.navbar { .navbar {
@ -79,6 +83,9 @@
.ui.tabs.divider { .ui.tabs.divider {
border-bottom: none; border-bottom: none;
} }
.ui.tabular .octicon {
margin-right: 5px;
}
} }
.filter.menu { .filter.menu {
.label.color { .label.color {
@ -170,9 +177,12 @@
} }
} }
tbody { tbody {
.icon { .octicon {
margin-left: 3px; margin-left: 3px;
margin-right: 5px; margin-right: 5px;
&.octicon-mail-reply {
margin-right: 10px;
}
} }
} }
td { td {

1
routers/admin/users.go

@ -206,6 +206,7 @@ func EditUserPost(ctx *context.Context, form auth.AdminEditUserForm) {
u.IsAdmin = form.Admin u.IsAdmin = form.Admin
u.AllowGitHook = form.AllowGitHook u.AllowGitHook = form.AllowGitHook
u.AllowImportLocal = form.AllowImportLocal u.AllowImportLocal = form.AllowImportLocal
u.ProhibitLogin = form.ProhibitLogin
if err := models.UpdateUser(u); err != nil { if err := models.UpdateUser(u); err != nil {
if models.IsErrEmailAlreadyUsed(err) { if models.IsErrEmailAlreadyUsed(err) {

7
routers/api/v1/api.go

@ -221,9 +221,12 @@ func RegisterRoutes(m *macaron.Macaron) {
Delete(repo.Delete) Delete(repo.Delete)
m.Group("/:username/:reponame", func() { m.Group("/:username/:reponame", func() {
m.Combo("/hooks").Get(repo.ListHooks). m.Group("/hooks", func() {
m.Combo("").Get(repo.ListHooks).
Post(bind(api.CreateHookOption{}), repo.CreateHook) Post(bind(api.CreateHookOption{}), repo.CreateHook)
m.Patch("/hooks/:id:int", bind(api.EditHookOption{}), repo.EditHook) m.Combo("/:id").Patch(bind(api.EditHookOption{}), repo.EditHook).
Delete(repo.DeleteHook)
})
m.Get("/raw/*", context.RepoRef(), repo.GetRawFile) m.Get("/raw/*", context.RepoRef(), repo.GetRawFile)
m.Get("/archive/*", repo.GetArchive) m.Get("/archive/*", repo.GetArchive)
m.Group("/branches", func() { m.Group("/branches", func() {

9
routers/api/v1/repo/hook.go

@ -162,3 +162,12 @@ func EditHook(ctx *context.APIContext, form api.EditHookOption) {
ctx.JSON(200, convert.ToHook(ctx.Repo.RepoLink, w)) ctx.JSON(200, convert.ToHook(ctx.Repo.RepoLink, w))
} }
func DeleteHook(ctx *context.APIContext) {
if err := models.DeleteWebhookByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id")); err != nil {
ctx.Error(500, "DeleteWebhookByRepoID", err)
return
}
ctx.Status(204)
}

18
routers/org/setting.go

@ -7,8 +7,6 @@ package org
import ( import (
"strings" "strings"
"github.com/Unknwon/com"
"github.com/gogits/gogs/models" "github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/auth" "github.com/gogits/gogs/modules/auth"
"github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/base"
@ -142,18 +140,6 @@ func Webhooks(ctx *context.Context) {
ctx.Data["BaseLink"] = ctx.Org.OrgLink ctx.Data["BaseLink"] = ctx.Org.OrgLink
ctx.Data["Description"] = ctx.Tr("org.settings.hooks_desc") ctx.Data["Description"] = ctx.Tr("org.settings.hooks_desc")
// Delete web hook.
remove := com.StrTo(ctx.Query("remove")).MustInt64()
if remove > 0 {
if err := models.DeleteWebhook(remove); err != nil {
ctx.Handle(500, "DeleteWebhook", err)
return
}
ctx.Flash.Success(ctx.Tr("repo.settings.remove_hook_success"))
ctx.Redirect(ctx.Org.OrgLink + "/settings/hooks")
return
}
ws, err := models.GetWebhooksByOrgID(ctx.Org.Organization.Id) ws, err := models.GetWebhooksByOrgID(ctx.Org.Organization.Id)
if err != nil { if err != nil {
ctx.Handle(500, "GetWebhooksByOrgId", err) ctx.Handle(500, "GetWebhooksByOrgId", err)
@ -165,8 +151,8 @@ func Webhooks(ctx *context.Context) {
} }
func DeleteWebhook(ctx *context.Context) { func DeleteWebhook(ctx *context.Context) {
if err := models.DeleteWebhook(ctx.QueryInt64("id")); err != nil { if err := models.DeleteWebhookByOrgID(ctx.Org.Organization.Id, ctx.QueryInt64("id")); err != nil {
ctx.Flash.Error("DeleteWebhook: " + err.Error()) ctx.Flash.Error("DeleteWebhookByOrgID: " + err.Error())
} else { } else {
ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success")) ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success"))
} }

4
routers/repo/issue.go

@ -223,6 +223,10 @@ func Issues(ctx *context.Context) {
return return
} }
if viewType == "assigned" {
assigneeID = 0 // Reset ID to prevent unexpected selection of assignee.
}
ctx.Data["IssueStats"] = issueStats ctx.Data["IssueStats"] = issueStats
ctx.Data["SelectLabels"] = com.StrTo(selectLabels).MustInt64() ctx.Data["SelectLabels"] = com.StrTo(selectLabels).MustInt64()
ctx.Data["ViewType"] = viewType ctx.Data["ViewType"] = viewType

9
routers/repo/setting.go

@ -105,6 +105,15 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
} }
if repo.IsMirror { if repo.IsMirror {
if isNameChanged {
var err error
ctx.Repo.Mirror, err = models.GetMirror(repo.ID)
if err != nil {
ctx.Handle(500, "RefreshRepositoryMirror", err)
return
}
}
if form.Interval > 0 { if form.Interval > 0 {
ctx.Repo.Mirror.EnablePrune = form.EnablePrune ctx.Repo.Mirror.EnablePrune = form.EnablePrune
ctx.Repo.Mirror.Interval = form.Interval ctx.Repo.Mirror.Interval = form.Interval

4
routers/repo/webhook.go

@ -384,8 +384,8 @@ func TestWebhook(ctx *context.Context) {
} }
func DeleteWebhook(ctx *context.Context) { func DeleteWebhook(ctx *context.Context) {
if err := models.DeleteWebhook(ctx.QueryInt64("id")); err != nil { if err := models.DeleteWebhookByRepoID(ctx.Repo.Repository.ID, ctx.QueryInt64("id")); err != nil {
ctx.Flash.Error("DeleteWebhook: " + err.Error()) ctx.Flash.Error("DeleteWebhookByRepoID: " + err.Error())
} else { } else {
ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success")) ctx.Flash.Success(ctx.Tr("repo.settings.webhook_deletion_success"))
} }

2
templates/.VERSION

@ -1 +1 @@
0.9.44.0716 0.9.46.0717

6
templates/admin/user/edit.tmpl

@ -73,6 +73,12 @@
<input name="active" type="checkbox" {{if .User.IsActive}}checked{{end}}> <input name="active" type="checkbox" {{if .User.IsActive}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field">
<div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.prohibit_login"}}</strong></label>
<input name="prohibit_login" type="checkbox" {{if .User.ProhibitLogin}}checked{{end}}>
</div>
</div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.is_admin"}}</strong></label> <label><strong>{{.i18n.Tr "admin.users.is_admin"}}</strong></label>

20
templates/base/head.tmpl

@ -19,7 +19,7 @@
<script src="{{AppSubUrl}}/js/jquery-1.11.3.min.js"></script> <script src="{{AppSubUrl}}/js/jquery-1.11.3.min.js"></script>
<script src="{{AppSubUrl}}/js/jquery.are-you-sure.js"></script> <script src="{{AppSubUrl}}/js/jquery.are-you-sure.js"></script>
<link rel="stylesheet" href="{{AppSubUrl}}/assets/font-awesome-4.6.3/css/font-awesome.min.css"> <link rel="stylesheet" href="{{AppSubUrl}}/assets/font-awesome-4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{{AppSubUrl}}/assets/octicons-3.5.0/octicons.css"> <link rel="stylesheet" href="{{AppSubUrl}}/assets/octicons-4.3.0/octicons.min.css">
{{if .RequireSimpleMDE}} {{if .RequireSimpleMDE}}
<link rel="stylesheet" href="{{AppSubUrl}}/plugins/simplemde-1.10.1/simplemde.min.css"> <link rel="stylesheet" href="{{AppSubUrl}}/plugins/simplemde-1.10.1/simplemde.min.css">
@ -77,13 +77,13 @@
</span> </span>
<div class="menu"> <div class="menu">
<a class="item" href="{{AppSubUrl}}/repo/create"> <a class="item" href="{{AppSubUrl}}/repo/create">
<i class="icon octicon octicon-plus"></i> {{.i18n.Tr "new_repo"}} <i class="octicon octicon-plus"></i> {{.i18n.Tr "new_repo"}}
</a> </a>
<a class="item" href="{{AppSubUrl}}/repo/migrate"> <a class="item" href="{{AppSubUrl}}/repo/migrate">
<i class="icon octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}} <i class="octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}}
</a> </a>
<a class="item" href="{{AppSubUrl}}/org/create"> <a class="item" href="{{AppSubUrl}}/org/create">
<i class="icon octicon octicon-organization"></i> {{.i18n.Tr "new_org"}} <i class="octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}
</a> </a>
</div><!-- end content create new menu --> </div><!-- end content create new menu -->
</div><!-- end dropdown menu create new --> </div><!-- end dropdown menu create new -->
@ -101,15 +101,15 @@
<div class="divider"></div> <div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}"> <a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}">
<i class="icon octicon octicon-person"></i> <i class="octicon octicon-person"></i>
{{.i18n.Tr "your_profile"}}<!-- Your profile --> {{.i18n.Tr "your_profile"}}<!-- Your profile -->
</a> </a>
<a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings"> <a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings">
<i class="icon octicon octicon-settings"></i> <i class="octicon octicon-settings"></i>
{{.i18n.Tr "your_settings"}}<!-- Your settings --> {{.i18n.Tr "your_settings"}}<!-- Your settings -->
</a> </a>
<a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer"> <a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer">
<i class="icon octicon octicon-question"></i> <i class="octicon octicon-question"></i>
{{.i18n.Tr "help"}}<!-- Help --> {{.i18n.Tr "help"}}<!-- Help -->
</a> </a>
{{if .IsAdmin}} {{if .IsAdmin}}
@ -123,7 +123,7 @@
<div class="divider"></div> <div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/user/logout"> <a class="item" href="{{AppSubUrl}}/user/logout">
<i class="icon octicon octicon-sign-out"></i> <i class="octicon octicon-sign-out"></i>
{{.i18n.Tr "sign_out"}}<!-- Sign Out --> {{.i18n.Tr "sign_out"}}<!-- Sign Out -->
</a> </a>
</div><!-- end content avatar menu --> </div><!-- end content avatar menu -->
@ -136,11 +136,11 @@
<div class="right menu"> <div class="right menu">
{{if .ShowRegistrationButton}} {{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up"> <a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
<i class="icon octicon octicon-person-add"></i> {{.i18n.Tr "register"}} <i class="octicon octicon-person"></i> {{.i18n.Tr "register"}}
</a> </a>
{{end}} {{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubUrl}}/user/login"> <a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubUrl}}/user/login">
<i class="icon octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}} <i class="octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}}
</a> </a>
</div><!-- end anonymous right menu --> </div><!-- end anonymous right menu -->

6
templates/explore/repo_list.tmpl

@ -4,11 +4,11 @@
<div class="ui header"> <div class="ui header">
<a class="name" href="{{AppSubUrl}}/{{if .Owner}}{{.Owner.Name}}{{else if $.Org}}{{$.Org.Name}}{{else}}{{$.Owner.Name}}{{end}}/{{.Name}}">{{if $.PageIsExplore}}{{.Owner.Name}} / {{end}}{{.Name}}</a> <a class="name" href="{{AppSubUrl}}/{{if .Owner}}{{.Owner.Name}}{{else if $.Org}}{{$.Org.Name}}{{else}}{{$.Owner.Name}}{{end}}/{{.Name}}">{{if $.PageIsExplore}}{{.Owner.Name}} / {{end}}{{.Name}}</a>
{{if .IsPrivate}} {{if .IsPrivate}}
<span class="text gold"><i class="icon octicon octicon-lock"></i></span> <span class="text gold"><i class="octicon octicon-lock"></i></span>
{{else if .IsFork}} {{else if .IsFork}}
<span><i class="icon octicon octicon-repo-forked"></i></span> <span><i class="octicon octicon-repo-forked"></i></span>
{{else if .IsMirror}} {{else if .IsMirror}}
<span><i class="icon octicon octicon-repo-clone"></i></span> <span><i class="octicon octicon-repo-clone"></i></span>
{{end}} {{end}}
<div class="ui right metas"> <div class="ui right metas">

10
templates/org/home.tmpl

@ -7,12 +7,12 @@
<div id="org-info"> <div id="org-info">
<div class="ui header"> <div class="ui header">
{{.Org.FullName}} {{.Org.FullName}}
{{if .IsOrganizationOwner}}<a class="text grey" href="{{.OrgLink}}/settings"><span class="icon octicon octicon-gear"></span></a>{{end}} {{if .IsOrganizationOwner}}<a class="text grey" href="{{.OrgLink}}/settings"><span class="octicon octicon-gear"></span></a>{{end}}
</div> </div>
{{if .Org.Description}}<p class="desc">{{.Org.Description}}</p>{{end}} {{if .Org.Description}}<p class="desc">{{.Org.Description}}</p>{{end}}
<div class="text grey meta"> <div class="text grey meta">
{{if .Org.Location}}<div class="item"><span class="icon octicon octicon-location"></span> <span>{{.Org.Location}}</span></div>{{end}} {{if .Org.Location}}<div class="item"><span class="octicon octicon-location"></span> <span>{{.Org.Location}}</span></div>{{end}}
{{if .Org.Website}}<div class="item"><span class="icon octicon octicon-link"></span> <a target="_blank" href="{{.Org.Website}}">{{.Org.Website}}</a></div>{{end}} {{if .Org.Website}}<div class="item"><span class="octicon octicon-link"></span> <a target="_blank" href="{{.Org.Website}}">{{.Org.Website}}</a></div>{{end}}
</div> </div>
</div> </div>
@ -39,7 +39,7 @@
<strong>{{.i18n.Tr "org.people"}}</strong> <strong>{{.i18n.Tr "org.people"}}</strong>
{{if .IsOrganizationMember}} {{if .IsOrganizationMember}}
<div class="ui right"> <div class="ui right">
<a class="text grey" href="{{.OrgLink}}/members"><strong>{{.Org.NumMembers}}</strong><span class="octicon octicon-chevron-right"></span></a> <a class="text grey" href="{{.OrgLink}}/members">{{.Org.NumMembers}} <span class="octicon octicon-chevron-right"></span></a>
</div> </div>
{{end}} {{end}}
</h4> </h4>
@ -61,7 +61,7 @@
<div class="ui top attached header"> <div class="ui top attached header">
<strong>{{.i18n.Tr "org.teams"}}</strong> <strong>{{.i18n.Tr "org.teams"}}</strong>
<div class="ui right"> <div class="ui right">
<a class="text grey" href="{{.OrgLink}}/teams"><strong>{{.Org.NumTeams}}</strong><span class="octicon octicon-chevron-right"></span></a> <a class="text grey" href="{{.OrgLink}}/teams"><span>{{.Org.NumTeams}}</span> <span class="octicon octicon-chevron-right"></span></a>
</div> </div>
</div> </div>
<div class="ui attached table segment teams"> <div class="ui attached table segment teams">

2
templates/org/team/repositories.tmpl

@ -17,7 +17,7 @@
<a class="ui red small button right" href="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/repo/remove?repoid={{.ID}}">{{$.i18n.Tr "org.teams.remove_repo"}}</a> <a class="ui red small button right" href="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/repo/remove?repoid={{.ID}}">{{$.i18n.Tr "org.teams.remove_repo"}}</a>
{{end}} {{end}}
<a class="member" href="{{AppSubUrl}}/{{$.Org.Name}}/{{.Name}}"> <a class="member" href="{{AppSubUrl}}/{{$.Org.Name}}/{{.Name}}">
<i class="icon octicon octicon-{{if .IsPrivate}}lock{{else if .IsFork}}repo-forked{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i> <i class="octicon octicon-{{if .IsPrivate}}lock{{else if .IsFork}}repo-forked{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i>
<strong>{{$.Org.Name}}/{{.Name}}</strong> <strong>{{$.Org.Name}}/{{.Name}}</strong>
</a> </a>
</div> </div>

2
templates/repo/branch_dropdown.tmpl

@ -18,7 +18,7 @@
<div class="two column row"> <div class="two column row">
<a class="reference column" href="#" data-target="#branch-list"> <a class="reference column" href="#" data-target="#branch-list">
<span class="text {{if not .IsViewTag}}black{{end}}"> <span class="text {{if not .IsViewTag}}black{{end}}">
<i class="icon octicon octicon-git-branch"></i> {{.i18n.Tr "repo.branches"}} <i class="octicon octicon-git-branch"></i> {{.i18n.Tr "repo.branches"}}
</span> </span>
</a> </a>
<a class="reference column" href="#" data-target="#tag-list"> <a class="reference column" href="#" data-target="#tag-list">

18
templates/repo/header.tmpl

@ -10,7 +10,7 @@
<div class="divider"> / </div> <div class="divider"> / </div>
<a href="{{$.RepoLink}}">{{.Name}}</a> <a href="{{$.RepoLink}}">{{.Name}}</a>
{{if .IsMirror}}<div class="fork-flag">{{$.i18n.Tr "repo.mirror_from"}} <a target="_blank" href="{{$.Mirror.Address}}">{{$.Mirror.Address}}</a></div>{{end}} {{if .IsMirror}}<div class="fork-flag">{{$.i18n.Tr "repo.mirror_from"}} <a target="_blank" href="{{$.Mirror.Address}}">{{$.Mirror.Address}}</a></div>{{end}}
{{if .IsFork}}<div class="fork-flag">{{$.i18n.Tr "repo.forked_from"}} <a href="{{.BaseRepo.Link}}">{{SubStr .BaseRepo.RepoRelLink 1 -1}}</a></div>{{end}} {{if .IsFork}}<div class="fork-flag">{{$.i18n.Tr "repo.forked_from"}} <a href="{{.BaseRepo.Link}}">{{SubStr .BaseRepo.RelLink 1 -1}}</a></div>{{end}}
</div> </div>
<div class="ui right"> <div class="ui right">
@ -33,7 +33,7 @@
{{if .CanBeForked}} {{if .CanBeForked}}
<div class="ui labeled button" tabindex="0"> <div class="ui labeled button" tabindex="0">
<a class="ui button {{if eq .OwnerID $.SignedUserID}}poping up{{end}}" {{if not (eq .OwnerID $.SignedUserID)}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" data-position="top center" data-variation="tiny"{{end}}> <a class="ui button {{if eq .OwnerID $.SignedUserID}}poping up{{end}}" {{if not (eq .OwnerID $.SignedUserID)}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" data-position="top center" data-variation="tiny"{{end}}>
<i class="icon octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}} <i class="octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}}
</a> </a>
<a class="ui basic label" href="{{.Link}}/forks"> <a class="ui basic label" href="{{.Link}}/forks">
{{.NumForks}} {{.NumForks}}
@ -50,33 +50,33 @@
<div class="ui tabs container"> <div class="ui tabs container">
<div class="ui tabular menu navbar"> <div class="ui tabular menu navbar">
<a class="{{if .PageIsViewCode}}active{{end}} item" href="{{.RepoLink}}"> <a class="{{if .PageIsViewCode}}active{{end}} item" href="{{.RepoLink}}">
<i class="icon octicon octicon-code"></i> {{.i18n.Tr "repo.code"}} <i class="octicon octicon-code"></i> {{.i18n.Tr "repo.code"}}
</a> </a>
{{if .Repository.EnableIssues}} {{if .Repository.EnableIssues}}
<a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues"> <a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues">
<i class="icon octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues"}} <span class="ui {{if not .Repository.NumOpenIssues}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenIssues}}</span> <i class="octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues"}} <span class="ui {{if not .Repository.NumOpenIssues}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenIssues}}</span>
</a> </a>
{{end}} {{end}}
{{if .Repository.AllowsPulls}} {{if .Repository.AllowsPulls}}
<a class="{{if .PageIsPullList}}active{{end}} item" href="{{.RepoLink}}/pulls"> <a class="{{if .PageIsPullList}}active{{end}} item" href="{{.RepoLink}}/pulls">
<i class="icon octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls"}} <span class="ui {{if not .Repository.NumOpenPulls}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenPulls}}</span> <i class="octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls"}} <span class="ui {{if not .Repository.NumOpenPulls}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenPulls}}</span>
</a> </a>
{{end}} {{end}}
<a class="{{if (or (.PageIsCommits) (.PageIsDiff))}}active{{end}} item" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}"> <a class="{{if (or (.PageIsCommits) (.PageIsDiff))}}active{{end}} item" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}">
<i class="icon octicon octicon-history"></i> {{.i18n.Tr "repo.commits"}} <span class="ui {{if not .CommitsCount}}gray{{else}}blue{{end}} small label">{{.CommitsCount}}</span> <i class="octicon octicon-history"></i> {{.i18n.Tr "repo.commits"}} <span class="ui {{if not .CommitsCount}}gray{{else}}blue{{end}} small label">{{.CommitsCount}}</span>
</a> </a>
<a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases"> <a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases">
<i class="icon octicon octicon-tag"></i> {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumTags}}gray{{else}}blue{{end}} small label">{{.Repository.NumTags}}</span> <i class="octicon octicon-tag"></i> {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumTags}}gray{{else}}blue{{end}} small label">{{.Repository.NumTags}}</span>
</a> </a>
{{if .Repository.EnableWiki}} {{if .Repository.EnableWiki}}
<a class="{{if .PageIsWiki}}active{{end}} item" href="{{.RepoLink}}/wiki"> <a class="{{if .PageIsWiki}}active{{end}} item" href="{{.RepoLink}}/wiki">
<i class="icon octicon octicon-book"></i> {{.i18n.Tr "repo.wiki"}} <i class="octicon octicon-book"></i> {{.i18n.Tr "repo.wiki"}}
</a> </a>
{{end}} {{end}}
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="right menu"> <div class="right menu">
<a class="{{if .PageIsSettings}}active{{end}} item" href="{{.RepoLink}}/settings"> <a class="{{if .PageIsSettings}}active{{end}} item" href="{{.RepoLink}}/settings">
<i class="icon octicon octicon-tools"></i> {{.i18n.Tr "repo.settings"}} <i class="octicon octicon-tools"></i> {{.i18n.Tr "repo.settings"}}
</a> </a>
</div> </div>
{{end}} {{end}}

4
templates/repo/home.tmpl

@ -49,8 +49,8 @@
<div class="ui basic jump dropdown icon button"> <div class="ui basic jump dropdown icon button">
<i class="download icon"></i> <i class="download icon"></i>
<div class="menu"> <div class="menu">
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="icon octicon octicon-file-zip"></i> ZIP</a> <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="octicon octicon-file-zip"></i> ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> TAR.GZ</a> <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
</div> </div>
</div> </div>
</div> </div>

2
templates/repo/issue/list.tmpl

@ -74,7 +74,7 @@
</span> </span>
<div class="menu"> <div class="menu">
<a class="{{if eq .ViewType "all"}}active{{end}} item" href="{{$.Link}}?type=all&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.all_issues"}}</a> <a class="{{if eq .ViewType "all"}}active{{end}} item" href="{{$.Link}}?type=all&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.all_issues"}}</a>
<a class="{{if eq .ViewType "assigned"}}active{{end}} item" href="{{$.Link}}?type=assigned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}">{{.i18n.Tr "repo.issues.filter_type.assigned_to_you"}}</a> <a class="{{if eq .ViewType "assigned"}}active{{end}} item" href="{{$.Link}}?type=assigned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.assigned_to_you"}}</a>
<a class="{{if eq .ViewType "created_by"}}active{{end}} item" href="{{$.Link}}?type=created_by&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.created_by_you"}}</a> <a class="{{if eq .ViewType "created_by"}}active{{end}} item" href="{{$.Link}}?type=created_by&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.created_by_you"}}</a>
<a class="{{if eq .ViewType "mentioned"}}active{{end}} item" href="{{$.Link}}?type=mentioned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.mentioning_you"}}</a> <a class="{{if eq .ViewType "mentioned"}}active{{end}} item" href="{{$.Link}}?type=mentioned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.mentioning_you"}}</a>
</div> </div>

4
templates/repo/release/list.tmpl

@ -54,10 +54,10 @@
<h2>{{$.i18n.Tr "repo.release.downloads"}}</h2> <h2>{{$.i18n.Tr "repo.release.downloads"}}</h2>
<ul class="list"> <ul class="list">
<li> <li>
<a href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="icon octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</a> <a href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</a>
</li> </li>
<li> <li>
<a href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</a> <a href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</a>
</li> </li>
</ul> </ul>
</div> </div>

6
templates/repo/user_cards.tmpl

@ -12,11 +12,11 @@
<div class="meta"> <div class="meta">
{{if .Website}} {{if .Website}}
<span class="icon octicon octicon-link"></span> <a href="{{.Website}}" target="_blank">{{.Website}}</a> <span class="octicon octicon-link"></span> <a href="{{.Website}}" target="_blank">{{.Website}}</a>
{{else if .Location}} {{else if .Location}}
<span class="icon octicon octicon-location"></span> {{.Location}} <span class="octicon octicon-location"></span> {{.Location}}
{{else}} {{else}}
<span class="icon octicon octicon-clock"></span> {{$.i18n.Tr "user.join_on"}} {{DateFmtShort .Created}} <span class="octicon octicon-clock"></span> {{$.i18n.Tr "user.join_on"}} {{DateFmtShort .Created}}
{{end}} {{end}}
</div> </div>
</li> </li>

6
templates/repo/view_list.tmpl

@ -20,7 +20,7 @@
<tbody> <tbody>
{{if .HasParentPath}} {{if .HasParentPath}}
<tr class="has-parent"> <tr class="has-parent">
<td colspan="3"><i class="icon octicon octicon-mail-reply"></i><a href="{{EscapePound .BranchLink}}{{.ParentPath}}">..</a></td> <td colspan="3"><i class="octicon octicon-mail-reply"></i><a href="{{EscapePound .BranchLink}}{{.ParentPath}}">..</a></td>
</tr> </tr>
{{end}} {{end}}
{{range $item := .Files}} {{range $item := .Files}}
@ -29,7 +29,7 @@
<tr> <tr>
{{if $entry.IsSubModule}} {{if $entry.IsSubModule}}
<td> <td>
<span class="icon octicon octicon-file-submodule"></span> <span class="octicon octicon-file-submodule"></span>
{{$refURL := $commit.RefURL AppUrl $.BranchLink}} {{$refURL := $commit.RefURL AppUrl $.BranchLink}}
{{if $refURL}} {{if $refURL}}
<a href="{{$refURL}}">{{$entry.Name}}</a> @ <a href="{{$refURL}}/commit/{{$commit.RefID}}">{{ShortSha $commit.RefID}}</a> <a href="{{$refURL}}">{{$entry.Name}}</a> @ <a href="{{$refURL}}/commit/{{$commit.RefID}}">{{ShortSha $commit.RefID}}</a>
@ -39,7 +39,7 @@
</td> </td>
{{else}} {{else}}
<td class="name"> <td class="name">
<span class="icon octicon octicon-file-{{if or $entry.IsDir}}directory{{else}}text{{end}}"></span> <span class="octicon octicon-file-{{if or $entry.IsDir}}directory{{else}}text{{end}}"></span>
<a href="{{EscapePound $.BranchLink}}/{{EscapePound $.TreePath}}{{EscapePound $entry.Name}}">{{$entry.Name}}</a> <a href="{{EscapePound $.BranchLink}}/{{EscapePound $.TreePath}}{{EscapePound $entry.Name}}">{{$entry.Name}}</a>
</td> </td>
{{end}} {{end}}

2
templates/repo/wiki/pages.tmpl

@ -13,7 +13,7 @@
{{range .Pages}} {{range .Pages}}
<tr> <tr>
<td> <td>
<i class="icon octicon octicon-file-text"></i> <i class="octicon octicon-file-text"></i>
<a href="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name}}</a> <a href="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name}}</a>
</td> </td>
{{$timeSince := TimeSince .Updated $.Lang}} {{$timeSince := TimeSince .Updated $.Lang}}

16
templates/user/auth/prohibit_login.tmpl

@ -0,0 +1,16 @@
{{template "base/head" .}}
<div class="user activate">
<div class="ui middle very relaxed page grid">
<div class="column">
<form class="ui form">
<h2 class="ui top attached header">
{{.i18n.Tr "auth.prohibit_login"}}
</h2>
<div class="ui attached segment">
<p>{{.i18n.Tr "auth.prohibit_login_desc"}}</p>
</div>
</form>
</div>
</div>
</div>
{{template "base/footer" .}}

16
templates/user/dashboard/dashboard.tmpl

@ -29,10 +29,10 @@
{{range .Repos}} {{range .Repos}}
<li {{if .IsPrivate}}class="private"{{end}}> <li {{if .IsPrivate}}class="private"{{end}}>
<a href="{{AppSubUrl}}/{{$.ContextUser.Name}}/{{.Name}}"> <a href="{{AppSubUrl}}/{{$.ContextUser.Name}}/{{.Name}}">
<i class="icon octicon octicon-{{if .IsFork}}repo-forked{{else if .IsPrivate}}lock{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i> <i class="octicon octicon-{{if .IsFork}}repo-forked{{else if .IsPrivate}}lock{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i>
<strong class="text truncate item-name">{{.Name}}</strong> <strong class="text truncate item-name">{{.Name}}</strong>
<span class="ui right text light grey"> <span class="ui right text light grey">
<i class="octicon octicon-star"></i>{{.NumStars}} {{.NumStars}} <i class="octicon octicon-star rear"></i>
</span> </span>
</a> </a>
</li> </li>
@ -49,12 +49,12 @@
{{range .CollaborativeRepos}} {{range .CollaborativeRepos}}
<li {{if .IsPrivate}}class="private"{{end}}> <li {{if .IsPrivate}}class="private"{{end}}>
<a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}"> <a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}">
<i class="icon octicon octicon-{{if .IsPrivate}}lock{{else if .IsFork}}repo-forked{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i> <i class="octicon octicon-{{if .IsPrivate}}lock{{else if .IsFork}}repo-forked{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i>
<span class="text truncate owner-and-repo"> <span class="text truncate owner-and-repo">
<span class="text truncate owner-name">{{.Owner.Name}}</span> / <strong>{{.Name}}</strong> <span class="text truncate owner-name">{{.Owner.Name}}</span> / <strong>{{.Name}}</strong>
</span> </span>
<span class="ui right text light grey"> <span class="ui right text light grey">
<i class="octicon octicon-star"></i>{{.NumStars}} {{.NumStars}} <i class="octicon octicon-star rear"></i>
</span> </span>
</a> </a>
</li> </li>
@ -80,10 +80,10 @@
{{range .ContextUser.Orgs}} {{range .ContextUser.Orgs}}
<li> <li>
<a href="{{AppSubUrl}}/{{.Name}}"> <a href="{{AppSubUrl}}/{{.Name}}">
<i class="icon octicon octicon-organization"></i> <i class="octicon octicon-organization"></i>
<strong class="text truncate item-name">{{.Name}}</strong> <strong class="text truncate item-name">{{.Name}}</strong>
<span class="ui right text light grey"> <span class="ui right text light grey">
<i class="octicon octicon-repo"></i>{{.NumRepos}} {{.NumRepos}} <i class="octicon octicon-repo rear"></i>
</span> </span>
</a> </a>
</li> </li>
@ -108,10 +108,10 @@
{{range .Mirrors}} {{range .Mirrors}}
<li {{if .IsPrivate}}class="private"{{end}}> <li {{if .IsPrivate}}class="private"{{end}}>
<a href="{{AppSubUrl}}/{{$.ContextUser.Name}}/{{.Name}}"> <a href="{{AppSubUrl}}/{{$.ContextUser.Name}}/{{.Name}}">
<i class="icon octicon octicon-repo-clone"></i> <i class="octicon octicon-repo-clone"></i>
<strong class="text truncate item-name">{{.Name}}</strong> <strong class="text truncate item-name">{{.Name}}</strong>
<span class="ui right text light grey"> <span class="ui right text light grey">
<i class="octicon octicon-sync"></i>{{.Interval}}H {{.Interval}}H <i class="octicon octicon-sync rear"></i>
</span> </span>
</a> </a>
</li> </li>

2
templates/user/dashboard/navbar.tmpl

@ -22,7 +22,7 @@
{{end}} {{end}}
</div> </div>
<a class="item" href="{{AppSubUrl}}/org/create"> <a class="item" href="{{AppSubUrl}}/org/create">
<i class="octicon octicon-repo-create"></i>&nbsp;&nbsp;&nbsp;{{.i18n.Tr "new_org"}} <i class="octicon octicon-plus"></i>&nbsp;&nbsp;&nbsp;{{.i18n.Tr "new_org"}}
</a> </a>
</div> </div>
</div> </div>

16
templates/user/profile.tmpl

@ -20,23 +20,23 @@
<div class="extra content"> <div class="extra content">
<ul class="text black"> <ul class="text black">
{{if .Owner.Location}} {{if .Owner.Location}}
<li><i class="icon octicon octicon-location"></i> {{.Owner.Location}}</li> <li><i class="octicon octicon-location"></i> {{.Owner.Location}}</li>
{{end}} {{end}}
{{if and .Owner.Email .IsSigned}} {{if and .Owner.Email .IsSigned}}
<li> <li>
<i class="icon octicon octicon-mail"></i> <i class="octicon octicon-mail"></i>
<a href="mailto:{{.Owner.Email}}" rel="nofollow">{{.Owner.Email}}</a> <a href="mailto:{{.Owner.Email}}" rel="nofollow">{{.Owner.Email}}</a>
</li> </li>
{{end}} {{end}}
{{if .Owner.Website}} {{if .Owner.Website}}
<li> <li>
<i class="icon octicon octicon-link"></i> <i class="octicon octicon-link"></i>
<a target="_blank" href="{{.Owner.Website}}">{{.Owner.Website}}</a> <a target="_blank" href="{{.Owner.Website}}">{{.Owner.Website}}</a>
</li> </li>
{{end}} {{end}}
<li><i class="icon octicon octicon-clock"></i> {{.i18n.Tr "user.join_on"}} {{DateFmtShort .Owner.Created}}</li> <li><i class="octicon octicon-clock"></i> {{.i18n.Tr "user.join_on"}} {{DateFmtShort .Owner.Created}}</li>
<li> <li>
<i class="icon octicon octicon-person"></i> <i class="octicon octicon-person"></i>
<a href="{{.Owner.HomeLink}}/followers"> <a href="{{.Owner.HomeLink}}/followers">
{{.Owner.NumFollowers}} {{.i18n.Tr "user.followers"}} {{.Owner.NumFollowers}} {{.i18n.Tr "user.followers"}}
</a> </a>
@ -47,7 +47,7 @@
</li> </li>
{{/* {{/*
<li> <li>
<i class="icon octicon octicon-star"></i> <i class="octicon octicon-star"></i>
<a href="{{.Owner.HomeLink}}/stars"> <a href="{{.Owner.HomeLink}}/stars">
{{.Owner.NumStars}} {{.i18n.Tr "user.starred"}} {{.Owner.NumStars}} {{.i18n.Tr "user.starred"}}
</a> </a>
@ -76,11 +76,11 @@
<div class="ui eleven wide column"> <div class="ui eleven wide column">
<div class="ui secondary pointing menu"> <div class="ui secondary pointing menu">
<a class="{{if ne .TabName "activity"}}active{{end}} item" href="{{.Owner.HomeLink}}"> <a class="{{if ne .TabName "activity"}}active{{end}} item" href="{{.Owner.HomeLink}}">
<i class="icon octicon octicon-repo"></i> {{.i18n.Tr "user.repositories"}} <i class="octicon octicon-repo"></i> {{.i18n.Tr "user.repositories"}}
</a> </a>
<a class="item"> <a class="item">
<a class="{{if eq .TabName "activity"}}active{{end}} item" href="{{.Owner.HomeLink}}?tab=activity"> <a class="{{if eq .TabName "activity"}}active{{end}} item" href="{{.Owner.HomeLink}}?tab=activity">
<i class="icon octicon octicon-rss"></i> {{.i18n.Tr "user.activity"}} <i class="octicon octicon-rss"></i> {{.i18n.Tr "user.activity"}}
</a> </a>
</a> </a>
</div> </div>

Loading…
Cancel
Save