text:
<?xml version="1.0" encoding="UTF-8"?>
<servico versao="2" xmlns="http://servicos.gov.br/cartas-servico/v2/schema/servico" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://servicos.gov.br/cartas-servico/v2/schema/servico ../servico.xsd">
 <nome>
  Entrega voluntária de armas de fogo - Campanha Nacional do Desarmamento
 </nome>
 <nomes-populares>
 </nomes-populares>
 <descricao>Os proprietários ou possuidores de arma(s) de fogo, com ou sem registro, podem entregá-la(s) à Polícia Federal ou às instituições credenciadas para destruição. Ao entregar uma arma, o cidadão não precisará se identificar e receberá indenização que varia de R$ 150,00 a R$ 450,00, conforme o tipo da arma entregue.

A Campanha Nacional do Desarmamento busca a mobilização da sociedade brasileira para retirar de circulação o maior número possível de armas de fogo. A entrega é voluntária e pode ser feita em mais de 2 mil postos de coleta em todo o Brasil.

Para a entrega de uma arma, o cidadão deverá seguir os seguintes procedimentos:

1. Acessar o site da Campanha e emitir a guia de trânsito (Vide "Emissão da guia de trânsito");
2. Dirigir-se até um posto credenciado de entrega voluntária (Vide "Localize o posto de entrega voluntária de armas mais próximo de você") com a guia de trânsito e a arma desmuniciada (descarregada) e embalada, bem como documento de registro de arma de fogo (caso disponível);
3. Ao efetuar a entrega, o agente de segurança fará o recebimento via Sistema Desarma e solicitará ao cidadão o cadastramento de uma senha com 4 dígitos para recebimento da indenização;
4. Finalizado o cadastro via sistema, o cidadão receberá um documento de entrega da arma, que conterá um código de indenização com 16 dígitos;
5. Após 24h da entrega e no prazo máximo de 30 dias, o cidadão deverá se dirigir a um autoatendimento do Banco do Brasil para o saque da indenização. Para isso, é necessário apenas o código de indenização (16 dígitos) e a senha cadastrada (4 dígitos);

* Qualquer problema no processo deverá ser comunicado por e-mail: desarmamento@mj.gov.br
* (61) 2025-9125
* [Emissão da Guia de Trânsito](http://desarma.mj.gov.br/SisDesarmamento/formulario/portador.do)
* [Comunicação de ocorrências envolvendo Arma de Fogo](http://www.dpf.gov.br/servicos/armas/comunicacao-de-ocorrencias)
* [Sobre Armas de Fogo](http://www.dpf.gov.br/servicos/armas/)
 </descricao>
 <palavras-chave>
 </palavras-chave>
 <areas-de-interesse>
  <area-de-interesse>
   <id>
    protecao-social
   </id>
   <area>Proteção social</area>
  </area-de-interesse>
 </areas-de-interesse>
 <segmentos-da-sociedade>
  <segmento-da-sociedade>
   <id>
    cidadaos
   </id>
   <nome>
    Cidadãos
   </nome>
  </segmento-da-sociedade>
 </segmentos-da-sociedade>
 <eventos-da-linha-da-vida></eventos-da-linha-da-vida>
 <legislacao-relacionada></legislacao-relacionada>
 <solicitantes></solicitantes>
 <etapas>
  <etapa>
   <titulo>
   </titulo>
   <descricao>
   </descricao>
   <documentos></documentos>
   <custos excecoes="false">
    <custo>
     <descricao>
     </descricao>
     <valor>
     </valor>
    </custo>
   </custos>
   <canais-de-prestacao>
    <canal-de-prestacao tipo="Web" preferencial="true">
     <titulo>
     </titulo>
     <referencia>
      http://www.dpf.gov.br/simba/armas/campanha-do-desarmamento/entrega-de-arma-de-fogo
     </referencia>
    </canal-de-prestacao>
    <canal-de-prestacao tipo="Agendamento" preferencial="false">
     <titulo>
     </titulo>
     <referencia>
     </referencia>
    </canal-de-prestacao>
   </canais-de-prestacao>
  </etapa>
 </etapas>
 <orgao>
  <id>
   ministerio-da-justica-mj
  </id>
  <nome>
   Ministério da Justiça (MJ)
  </nome>
 </orgao>
 <situacao>
 </situacao>
</servico>


text:
package tektonpipeline

import (
	"context"

	mf "github.com/manifestival/manifestival"
	"github.com/tektoncd/operator/pkg/apis/operator/v1alpha1"
	tektonpipelinereconciler "github.com/tektoncd/operator/pkg/client/injection/reconciler/operator/v1alpha1/tektonpipeline"
	"knative.dev/pkg/logging"
	pkgreconciler "knative.dev/pkg/reconciler"
)

var _ tektonpipelinereconciler.Finalizer = (*Reconciler)(nil)

// FinalizeKind removes all resources after deletion of a TektonPipeline.
func (r *Reconciler) FinalizeKind(ctx context.Context, original *v1alpha1.TektonPipeline) pkgreconciler.Event {
	logger := logging.FromContext(ctx)

	// Delete CRDs before deleting rest of resources so that any instance
	// of CRDs which has finalizer set will get deleted before we remove
	// the controller;s deployment for it
	if err := r.manifest.Filter(mf.CRDs).Delete(); err != nil {
		logger.Error("Failed to delete CRDs for TektonPipeline")
		return err
	}

	if err := r.installerSetClient.CleanupMainSet(ctx); err != nil {
		logger.Error("failed to cleanup main installerset: ", err)
		return err
	}

	if err := r.extension.Finalize(ctx, original); err != nil {
		logger.Error("Failed to finalize platform resources: ", err)
	}

	return nil
}

redpajama_set_name: RedPajamaGithub


text:
const Issue = require('../../utils').issues.Issue

/**
 * Checks status column in a electroencephalography _channels.tsv file to
 * ensure its values are only * 'good', 'bad', or 'n/a'
 * @param {string[]} rows - Each row of a tsv file to be checked.
 * @param {Object} file - File of rows being checked, used for error message if
 *     problem is found.
 * @param {Object[]} issues - Array of issue objects to add to if problem is
 *     found.
 * @returns {null} Results of this function are stored in issues.
 */
const checkStatusCol = function (rows, file, issues) {
  const header = rows[0]
  const statusColumn = header.indexOf('status')
  if (statusColumn !== -1) {
    for (let i = 1; i < rows.length; i++) {
      const line = rows[i]
      const status = line[statusColumn]
      if (status !== 'good' && status !== 'bad' && status != 'n/a') {
        issues.push(
          new Issue({
            file: file,
            evidence: line.toString(),
            line: i + 1,
            reason:
              'the status column values should either be good, bad, or n/a',
            code: 125,
          }),
        )
      }
    }
  }
  return
}

export default checkStatusCol


text:
<!DOCTYPE html>

		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
		<title>Oh Hey! - Simple, site-wide notifications</title>
		<link rel="stylesheet" type="text/css" href="build/index.css" />
		<link rel="stylesheet" type="text/css" href="build/ohhey.css" />
		<link rel="stylesheet" type="text/css" href="build/ohhey-extend.css" />

		<meta property="og:title" content="Oh Hey! - Simple, site-wide notifications" />
		<meta property="og:url" content="http://hrag.github.io/ohhey" />
		<meta property="og:image" content="http://google.com/fb_img.jpg" />
		<meta property="og:description" content="Oh Hey! - Simple, site-wide notifications" />
		<meta property="og:site_name" content="Oh Hey! - Simple, site-wide notifications" />

Oh Hey!

A simple, drop-in script for site-wide notifictions

Here's an example of the function

ohHey('confirm', 'I just clicked this button');

			<button class="green" onclick="ohHey('confirm', 'Sweet - Things went well and you\'re a winner!');">A positive alert</button>
			This executes: ohHey("confirm", "Sweet - Things went well and you're a winner!");

			<button class="orange" onclick="ohHey('notice', 'FYI - This thing happened');">A neutral alert</button>
			This executes: ohHey("notice", "FYI - This thing happened");

			<button class="red" onclick="ohHey('urgent', 'Oops - It looks like some shit broke');">An urgent alert</button>
			This executes: ohHey("urgent", "Oops - It looks like some shit broke");

			<button class="grey" onclick="ohHey();">Close the alert</button>
			This executes: ohHey();

Check this out on GitHub


text:
class Tournament < ActiveRecord::Base
  belongs_to :party
  has_many :tournament_registrations
  has_many :teams, :through => :tournament_registrations
  belongs_to :game # wierd...want to use has_one, because it makes more sense...

  validates_presence_of :name, :message => 'is required!'
  validates_length_of :name, :within => 3..34, :message => 'must be between 3 and 34 characters!'
  validates_presence_of :team_size, :message => 'a maximum team size is required!'
  validates_numericality_of :team_size, :greater_than => 0, :less_than_or_equal_to => 20, :message => 'team sizes must be between 0 and 20'

  def current_registrations
    self.teams.count
  end

  def is_registered?(user)
    TournamentRegistration.count_by_sql "SELECT COUNT(r.*) FROM tournament_registrations r
        INNER JOIN team_memberships m ON m.tournament_id = r.tournament_id AND r.user_id = #{user.id}
        WHERE r.tournament_id = #{self.id}" != 0
  end

  def users_team(user)
    Team.find_all_by_party_id(self.id, :joins => [:teams, "INNER JOIN team_memberships ON team_memberships.user_id = #{user} AND team_memberships.team_id = team.id"]) rescue nil
  end
end


text:
#ifndef ArenaProperty_h__
#define ArenaProperty_h__

#include "ArenaPrerequisites.h"
#include "ArenaPropertyID.h"

namespace Demi
{
    #define DEFINE_PROPERTY_ID( Setting )   \
    public:                                 \
    enum ENUM_PROPERTY_ID {                 \
        PropertyID = Setting                \
    };                                      \
    static ArPropertyIDType GetStaticPropertyID()\
    { return (ArPropertyIDType)PropertyID; }\
    ArPropertyIDType GetPropertyID()   \
    { return (ArPropertyIDType)PropertyID; }

    /** Property base class for game entities
     */
    class ArProperty : public DiBase
    {
    protected:

        enum ENUM_ACTIVE_STATUS
        {
            UNACTIVE_STATE,
            ACTIVE_STATE
        };

    public:

        ArProperty()
            : mIsActive(UNACTIVE_STATE)
            , mEntity(nullptr)
        {
        }

        virtual ~ArProperty() {}

        virtual ArPropertyIDType GetPropertyID() { return PROPERTY_NONE; }

    public:

        template< typename T >
        const T* GetEntity()  const
        {
            DI_ASSERT(mEntity);
            return dynamic_cast<T*>(mEntity);
        }

        template< typename T >
        T* GetEntity()
        {
            DI_ASSERT(mEntity);
            return dynamic_cast<T*>(mEntity);
        }

    public:

        virtual void Update(float dt) {};

    public:

        void Activate()
        {
            mIsActive = ACTIVE_STATE;
            OnActivate();
        }

        void Deactivate()
        {
            mIsActive = UNACTIVE_STATE;
            OnDeactivate();
        }

        bool IsActive() const
        {
            if (mIsActive == ACTIVE_STATE)
                return true;
            else
                return false;
        }

    protected:
        virtual void OnActivate() {}
        virtual void OnDeactivate() {}
        virtual void OnEntityReady() {}

        friend class ArEntity;
        friend class ArGameEntity;

        void SetEntity(ArEntity*);

    protected:
        ArGameEntity*     mEntity;

    private:
        ENUM_ACTIVE_STATUS  mIsActive;
    };
}

#endif


text:
This playbook investigates an access incident by gathering user and IP information, and handling the incident based on the stages in "Handling an incident - Computer Security Incident Handling Guide" by NIST.
https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf

Used Sub-playbooks:
- IP Enrichment - Generic v2
- Account Enrichment - Generic v2.1
- Block IP - Generic v3
- NIST - Lessons Learned

## Dependencies
This playbook uses the following sub-playbooks, integrations, and scripts.

### Sub-playbooks
* Block IP - Generic v3
* Account Enrichment - Generic v2.1
* IP Enrichment - Generic v2
* NIST - Lessons Learned

### Integrations
* Active Directory Query v2

### Scripts
* ADGetUser
* GenerateInvestigationSummaryReport

### Commands
* send-mail
* ad-expire-password
* closeInvestigation
* ad-disable-account
* setIncident

## Playbook Inputs
---

| **Name** | **Description** | **Default Value** | **Required** |
| --- | --- | --- | --- |
| SrcIP | The source IP address from which the incident originated. |  | Optional |
| DstIP | The target IP address that was accessed. |  | Optional |
| Username | The email address of the account that was used to access the DstIP. |  | Optional |
| NotifyEmail | Email addresses to notify about the incident. |  | Optional |
| RemediationSLA | The Remediation SLA for the 'Containment, Eradication, and Recovery' stage \(in minutes\). |  | Optional |

## Playbook Outputs
---

| **Path** | **Description** | **Type** |
| --- | --- | --- |
| Account.Email.Address | The email address object associated with the Account | string |
| DBotScore | Indicator, Score, Type, Vendor | unknown |
| Account.ID | The unique Account DN \(Distinguished Name\) | string |
| Account.Username | The Account username | string |
| Account.Email | The email address associated with the Account | unknown |
| Account.Type | Type of the Account entity | string |
| Account.Groups | The groups the Account is part of | unknown |
| Account | Account object | unknown |
| Account.DisplayName | The Account display name | string |
| Account.Manager | The Account's manager | string |
| DBotScore.Indicator | The indicator value | string |
| DBotScore.Type | The indicator's type | string |
| DBotScore.Vendor | The indicator's vendor | string |
| DBotScore.Score | The indicator's score | number |
| IP | The IP objects | unknown |
| Endpoint | The Endpoint's object | unknown |
| Endpoint.Hostname | The hostname to enrich | string |
| Endpoint.OS | Endpoint OS | string |
| Endpoint.IP | List of endpoint IP addresses | unknown |
| Endpoint.MAC | List of endpoint MAC addresses | unknown |
| Endpoint.Domain | Endpoint domain name | string |

## Playbook Image
---
![Access Investigation - Generic - NIST](../doc_files/NIST_-_Access_Investigation_-_Generic.png)


text:
In GROBID, we call __consolidation__ the usage of an external bibliographical service to correct and complement the results extracted by the tool. GROBID extracts usually in a relatively reliable manner a core of bibliographical information, which can be used to match complete bibliographical records made available by these services.

Consolidation has two main interests:

* The consolidation service improves very significantly the retrieval of header information (+.12 to .13 in f-score, e.g. from 74.59 f-score in average for all fields with Ratcliff/Obershelp similarity at 0.95, to 86.62 f-score, using biblio-glutton and GROBID version 0.5.5 for the PMC 1942 dataset, see the [benchmarking documentation](https://grobid.readthedocs.io/en/latest/End-to-end-evaluation/) and [reports](https://github.com/kermitt2/grobid/tree/master/grobid-trainer/doc)).

* The consolidation service matches the extracted bibliographical references with known publications, and complement the parsed bibliographical references with various metadata, in particular DOI, making possible the creation of a citation graph and to link the extracted references to external services.

GROBID supports two consolidation services:

* [CrossRef REST API](https://github.com/CrossRef/rest-api-doc) (default)

* [biblio-glutton](https://github.com/kermitt2/biblio-glutton)

## CrossRef REST API

The advantage of __CrossRef__ is that it is available without any further installation. It has however a limited query rate (in practice around 25 queries per second), which make scaling impossible when processing bibliographical references for several documents processed in parallel. In addition, it provides metadata limited by what is available at CrossRef.

For using [reliably and politely the CrossRef REST API](https://github.com/CrossRef/rest-api-doc#good-manners--more-reliable-service), it is highly recommended to add a contact email to the queries. This is done in GROBID by modifying the properties file under `grobid-home/config/grobid.properties`:

```
org.grobid.crossref.mailto=toto@titi.tutu
```

Without indicating this email, the service might be unreliable with some query failures over time. The usage of the CrossRef REST API by GROBID respects the query rate indicated by the service dynamically by each response. Therefore, there should not be any issues reported by CrossRef via this email.

In case you are a lucky Crossref Metadata Plus subscriber, you can set your authorization token in the properties file under `grobid-home/config/grobid.properties` as follow:

```
org.grobid.crossref.token=yJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vY3Jvc3NyZWYub3JnLyIsImF1ZXYZImVuaGFuY2VkY21zIiwianRpIjoiN0M5ODlFNTItMTFEQS00QkY3LUJCRUUtODFCMUM3QzE0OTZEIn0.NYe3-O066sce9R1fjMzNEvP88VqSEaYdBY622FDiG8Uq
```

According to Crossref, the token will ensure that said requests get directed to a pool of machines that are reserved for "Plus" SLA users (note: of course the above token is fake).

## biblio-glutton

This service presents several advantages as compared to the CrossRef service. biblio-glutton can scale as required by adding more Elasticsearch nodes, allowing the processing of several PDF per second. The metadata provided by the service are richer: in addition to the CrossRef metadata, biblio-glutton also returns the PubMed and PubMed Central identifiers, ISTEX identifiers, PII, and the URL of the Open Access version of the full text following the Unpaywall dataset. Finally, the bibliographical reference matching is [slighty more reliable](https://github.com/kermitt2/biblio-glutton#matching-accuracy).

Unfortunately, you need to install the service yourself, including loading and indexing the bibliographical resources, as documented [here](https://github.com/kermitt2/biblio-glutton#building-the-bibliographical-data-look-up-and-matching-databases). Note that a [docker container](https://github.com/kermitt2/biblio-glutton#running-with-docker) is available.

After installing biblio-glutton, you need to select the glutton matching service in the `grobid-home/config/grobid.properties` file, with its host and port:

```
#-------------------- consolidation --------------------
# Define the bibliographical data consolidation service to be used, eiter "crossref" for CrossRef REST API or "glutton" for https://github.com/kermitt2/biblio-glutton
#grobid.consolidation.service=crossref
grobid.consolidation.service=glutton
org.grobid.glutton.host=localhost
org.grobid.glutton.port=8080
```

Note that the GROBID online demo hosted [here](http://grobid.science-miner.com) uses  biblio-glutton as consolidation service.


text:
#define SOM_NoTest

#include "share.h"
#include "notify.h"
#include "personv.h"

/*
 * SOM generates method stubs that
 * cause compiler warnings.  Suspend warnings
 * (but be wary, this can mask errors in the
 * emitted "passthru" sections of the CSC file).
 */

#define ShrPerson_Class_Source
#pragma checkout(suspend)
#include "person.ih"
#pragma checkout(resume)

/*
 * ShrFindPersonClass() is a convenience function
 * which returns a pointer to ShrPerson class.
 */

extern SOMClass *ShrFindPersonClass()
{
  return _somFindClass(SOMClassMgrObject,
      SOM_IdFromString(vszShrPersonClass), 0, 0);
}

/*
 *
 *  METHOD: shrQuery...                                     ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Return the requested instance variable value.
 *
 */

SOM_Scope ULONG SOMLINK per_shrQueryAddress
    (ShrPerson *somSelf, ULONG cchAddressMax, PCHAR pchAddress)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrQueryObjectString(somSelf, pchAddress,
      &_pszAddress, vszDefaultAddress);
}

SOM_Scope ULONG SOMLINK per_shrQueryCity
    (ShrPerson *somSelf, ULONG cchCityMax, PCHAR pchCity)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrQueryObjectString(somSelf, pchCity,
      &_pszCity, vszDefaultCity);
}

SOM_Scope ULONG SOMLINK per_shrQueryState
    (ShrPerson *somSelf, ULONG cchStateMax, PCHAR pchState)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrQueryObjectString(somSelf, pchState,
      &_pszState, vszDefaultState);
}

SOM_Scope ULONG SOMLINK per_shrQueryZipCode
    (ShrPerson *somSelf, ULONG cchZipCodeMax, PCHAR pchZipCode)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrQueryObjectString(somSelf, pchZipCode,
      &_pszZipCode, vszDefaultZipCode);
}

SOM_Scope ULONG SOMLINK per_shrQueryPhone
    (ShrPerson *somSelf, ULONG cchPhoneMax, PCHAR pchPhone)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrQueryObjectString(somSelf, pchPhone,
      &_pszPhone, vszDefaultPhone);
}

/*
 *
 *  METHOD: shrSet...                                       ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Set the requested instance variable value.
 *
 */

SOM_Scope BOOL SOMLINK per_shrSetAddress
    (ShrPerson *somSelf, PSZ pszNewAddress)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrSetObjectString(somSelf, pszNewAddress,
      &_pszAddress, SHRN_PERSONADDRESSCHANGED);
}

SOM_Scope BOOL SOMLINK per_shrSetCity
    (ShrPerson *somSelf, PSZ pszNewCity)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrSetObjectString(somSelf, pszNewCity,
      &_pszCity, SHRN_PERSONCITYCHANGED);
}

SOM_Scope BOOL SOMLINK per_shrSetState
    (ShrPerson *somSelf, PSZ pszNewState)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrSetObjectString(somSelf, pszNewState,
      &_pszState, SHRN_PERSONSTATECHANGED);
}

SOM_Scope BOOL SOMLINK per_shrSetZipCode
    (ShrPerson *somSelf, PSZ pszNewZipCode)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrSetObjectString(somSelf, pszNewZipCode,
      &_pszZipCode, SHRN_PERSONZIPCODECHANGED);
}

SOM_Scope BOOL SOMLINK per_shrSetPhone
    (ShrPerson *somSelf, PSZ pszNewPhone)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  return ShrSetObjectString(somSelf, pszNewPhone,
      &_pszPhone, SHRN_PERSONPHONECHANGED);
}

/*
 *
 *  METHOD: shrQueryNotifier                                ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Return an instance of a ShrNotifier.  Windows (views)
 *    register interest in this object with the notifier.
 *    When something is changed in this object that affects
 *    the view(s), they are notified.
 *
 *    Using this notification scheme better separates the
 *    model (PERSON.C) and view (PSERONV.C) code.  It also
 *    helps centralize the view code that handles updates
 *    of what the user sees when required by changes in the model.
 *
 *    See ShrNotifier for more details, especially the
 *    shrNotifyInterestedWindows method.  Also see the PERSON.CSC
 *    file for more details about this method.
 */

SOM_Scope SOMObject * SOMLINK per_shrQueryNotifier(ShrPerson *somSelf)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);
  BOOL bHoldingSem = FALSE;

  /*
   * NOTE!  It is very important that exception handlers be coded in
   * routines that request mutex semaphores!  The exception condition
   * should relinquish the semaphore if it was successfully
   * requested.  Otherwise, later requestors of the semaphore could
   * wait indefinitely, typically resulting in a hang of one of the
   * WPS threads or the entire WPS.
   *
   * ShrStartTryBlock is a macro that installs an exception
   * handler for this function.  See SHARE.H for more details.
   */

  ShrStartTryBlock;

  bHoldingSem = !_wpRequestObjectMutexSem(somSelf, SEM_INDEFINITE_WAIT);

  if (bHoldingSem)
  {
    if (!_somNotifier)
      _somNotifier = ShrNotifierNew();

    bHoldingSem = _wpReleaseObjectMutexSem(somSelf);
  }

  ShrEndTryBlock;
  return _somNotifier;

  /*
   * Exception handling code for this function goes here.
   */

OnException:
  if (bHoldingSem)
    bHoldingSem = _wpReleaseObjectMutexSem(somSelf);

  ShrEndTryBlock;
  return NULL;
}

/*
 *
 *  METHOD: shrUnderstandsProtocol                          ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    This a more flexible method of dynamically determining an
 *    object protocol (or "type) than _somIsA.
 *
 *    Developers may want to implement a new-and-improved version
 *    of this class object that is not a direct descendant of this
 *    class' superclass.  This would not be possible if client
 *    classes use _somIsA.
 *
 *    But note there is a problem -- this class may have methods
 *    that are not "name lookup" methods, ie, they use the offset
 *    method, so creating a new class that is not a subclass of
 *    this class's superclass would require considerable care
 *    since it would have to be certain to have its version of
 *    this class has its methods in the same order as the method
 *    table of this class.
 *
 */

SOM_Scope BOOL SOMLINK per_shrUnderstandsProtocol
    (ShrPerson *somSelf, ULONG idProtocol)
{
  return (idProtocol == PROTOCOL_PERSON);
}

/*
 *
 *  OVERRIDE: wpSetTitle                                   ( ) PRIVATE
 *                                                         (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Notify interested windows that the object's title has changed.
 *
 *    This is necessary to keep the "Name:" field of the "Info" page
 *    on the Settings view in sync if the user uses direct edit on
 *    the person icon (Alt+MB1), or modifies the "Title:" field on
 *    the "General" page of the Settings view to change the object
 *    title.
 */

SOM_Scope BOOL SOMLINK per_wpSetTitle
    (ShrPerson *somSelf, PSZ pszNewTitle)
{
  BOOL bSuccess;

  bSuccess = parent_wpSetTitle(somSelf,pszNewTitle);

  if (bSuccess)
    _shrNotifyInterestedWindows(_shrQueryNotifier(somSelf),
        somSelf, SHRN_PERSONNAMECHANGED, somSelf, pszNewTitle);

  return bSuccess;
}

/*
 *
 *  OVERRIDE: wpUnInitData                                  ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Clear up memory that was allocated on wpInitData.
 *
 */

SOM_Scope void SOMLINK per_wpUnInitData(ShrPerson *somSelf)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  if (_somNotifier)
    _somFree(_somNotifier);

  if (_pszAddress)
    _wpFreeMem(somSelf, _pszAddress);

  if (_pszCity)
    _wpFreeMem(somSelf, _pszCity);

  if (_pszState)
    _wpFreeMem(somSelf, _pszState);

  if (_pszPhone)
    _wpFreeMem(somSelf, _pszPhone);

  parent_wpUnInitData(somSelf);
}

/*
 *
 *  OVERRIDE: wpSaveState                                   ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Save our state variables.
 *
 */

SOM_Scope BOOL SOMLINK per_wpSaveState(ShrPerson *somSelf)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);

  if (_pszAddress)
    _wpSaveString(somSelf, vszShrPersonClass, IDK_ADDRESS, _pszAddress);

  if (_pszCity)
    _wpSaveString(somSelf, vszShrPersonClass, IDK_CITY, _pszCity);

  if (_pszState)
    _wpSaveString(somSelf, vszShrPersonClass, IDK_STATE, _pszState);

  if (_pszZipCode)
    _wpSaveString(somSelf, vszShrPersonClass, IDK_ZIPCODE, _pszZipCode);

  if (_pszPhone)
    _wpSaveString(somSelf, vszShrPersonClass, IDK_PHONE, _pszPhone);

  return (parent_wpSaveState(somSelf));
}

/*
 *
 *  OVERRIDE: wpRestoreState                                ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Retrieve our saved state variables.
 *
 */

SOM_Scope BOOL SOMLINK per_wpRestoreState
    (ShrPerson *somSelf, ULONG ulReserved)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);
  ULONG cbData;

  if (_wpRestoreString(somSelf, vszShrPersonClass,
      IDK_ADDRESS, NULL, &cbData))
  {
    _pszAddress = _wpAllocMem(somSelf, cbData, NULL);

    if (_pszAddress)
      _wpRestoreString(somSelf, vszShrPersonClass, IDK_ADDRESS,
          _pszAddress, &cbData);
  }

  if (_wpRestoreString(somSelf, vszShrPersonClass,
      IDK_CITY, NULL, &cbData))
  {
    _pszCity = _wpAllocMem(somSelf, cbData, NULL);

    if (_pszCity)
      _wpRestoreString(somSelf, vszShrPersonClass, IDK_CITY,
          _pszCity, &cbData);
  }

  if (_wpRestoreString(somSelf, vszShrPersonClass,
      IDK_STATE, NULL, &cbData))
  {
    _pszState = _wpAllocMem(somSelf, cbData, NULL);

    if (_pszState)
      _wpRestoreString(somSelf, vszShrPersonClass, IDK_STATE,
          _pszState, &cbData);
  }

  if (_wpRestoreString(somSelf, vszShrPersonClass,
      IDK_ZIPCODE, NULL, &cbData))
  {
    _pszZipCode = _wpAllocMem(somSelf, cbData, NULL);

    if (_pszZipCode)
      _wpRestoreString(somSelf, vszShrPersonClass, IDK_ZIPCODE,
          _pszZipCode, &cbData);
  }

  if (_wpRestoreString(somSelf, vszShrPersonClass,
      IDK_PHONE, NULL, &cbData))
  {
    _pszPhone = _wpAllocMem(somSelf, cbData, NULL);

    if (_pszPhone)
      _wpRestoreString(somSelf, vszShrPersonClass, IDK_PHONE,
          _pszPhone, &cbData);
  }

  return (parent_wpRestoreState(somSelf,ulReserved));
}

/*
 *
 *  METHOD: shrclsAddPersonInfoPage                         ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Adds the "Info" page to the Settings view notebook.
 *    Also see the override of wpAddSettingsPages.
 *
 */

SOM_Scope BOOL SOMLINK per_shrAddPersonInfoPage
    (ShrPerson *somSelf, HWND hwndNotebook)
{
  PAGEINFO pageinfo;

  memset(&pageinfo, 0, sizeof(PAGEINFO));
  pageinfo.cb = sizeof(PAGEINFO);
  pageinfo.usPageStyleFlags = BKA_MAJOR;
  pageinfo.usPageInsertFlags = BKA_FIRST;
  pageinfo.resid = _shrclsQueryModuleHandle(_somGetClass(somSelf));
  pageinfo.pCreateParams = somSelf;

  pageinfo.pszName = vszPersonInfoTab;
  pageinfo.dlgid = IDD_PERSONINFOPAGE;
  pageinfo.pfnwp = ShrPersonInfoPageDlgProc;

  return _wpInsertSettingsPage(somSelf, hwndNotebook, &pageinfo);
}

/*
 *
 *   OVERRIDE: wpAddSettingsPages                           ( ) PRIVATE
 *                                                          (X) PUBLIC
 *   DESCRIPTION:
 *
 *     Notification to add settings pages.
 *
 */

SOM_Scope BOOL SOMLINK per_wpAddSettingsPages
    (ShrPerson *somSelf, HWND hwndNotebook)
{
  BOOL bSuccess;

  bSuccess = parent_wpAddSettingsPages(somSelf, hwndNotebook);

  if (bSuccess)
    _shrAddPersonInfoPage(somSelf, hwndNotebook);

  return bSuccess;
}

/*
 */
/*
 *
 *   OVERRIDE: wpQueryDetailsData                           ( ) PRIVATE
 *                                                          (X) PUBLIC
 *   DESCRIPTION:
 *
 *     Return the data for displaying the person in details
 *     view of a folder.
 *
 *     This method must return data matching the structure
 *     described in the wpclsQueryDetailsInfo override.
 *
 */

SOM_Scope BOOL SOMLINK per_wpQueryDetailsData
    (ShrPerson *somSelf, PVOID *ppDetailsData, PULONG pcb)
{
  ShrPersonData *somThis = ShrPersonGetData(somSelf);
  BOOL bSuccess;
  PPERSONDETAILS   pPersonDetails;
  ULONG cbSuperclassDetails;

  if (!ppDetailsData)
  {
    /*
     * Only interested in the length of the details data.
     */

    bSuccess = parent_wpQueryDetailsData(somSelf, NULL, pcb);
    *pcb += sizeof(PERSONDETAILS);
  }
  else
  {
    bSuccess = parent_wpQueryDetailsData(somSelf, ppDetailsData, pcb);

    if (bSuccess)
    {
      /*
       * Next see if buffer is big enough to also accomodate our
       * portion of details data.
       */

      parent_wpQueryDetailsData(somSelf, NULL, &cbSuperclassDetails);

      if ((cbSuperclassDetails + sizeof(PERSONDETAILS)) > *pcb)
      {
        bSuccess = FALSE;
      }
      else
      {
        /*
         * Fill in the details for this object.
         */

        pPersonDetails = (PPERSONDETAILS) *ppDetailsData;

        /*
         * If nothing has been set, return the defaults.
         * We could store the defaults in each object
         * by setting these instance varibles in wpInitData,
         * but that would waste memory and disk space.
         *
         * Note the Details view fields are read-only.  If
         * that were to change, we would have to allocate
         * space for each default field to avoid the
         * global MRI variables being modified.
         */

        if (_pszAddress)
          pPersonDetails->pszAddress = _pszAddress;
        else
          pPersonDetails->pszAddress = vszDefaultAddress;

        if (_pszCity)
          pPersonDetails->pszCity = _pszCity;
        else
          pPersonDetails->pszCity = vszDefaultCity;

        if (_pszState)
          pPersonDetails->pszState = _pszState;
        else
          pPersonDetails->pszState = vszDefaultState;

        if (_pszZipCode)
          pPersonDetails->pszZipCode = _pszZipCode;
        else
          pPersonDetails->pszZipCode = vszDefaultZipCode;

        if (_pszPhone)
          pPersonDetails->pszPhone = _pszPhone;
        else
          pPersonDetails->pszPhone = vszDefaultPhone;

        *ppDetailsData = pPersonDetails+1;
      }
    }
  }

  return bSuccess;
}

/*
 * Class Methods.
 *
 * IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT!
 * IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT!
 * IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT! IMPORTANT!
 *
 * The "undef/define" below marks the begining of the
 * class methods.  SOM's macros will generate the
 * wrong code if instance methods are defined after
 * this point (causing strange runtime traps).
 *
 * Be careful when adding new INSTANCE methods to the CSC file because
 * they are automatically appended to the end of the C file, but
 * must appear above the "#undef SOM_CurrentClass".
 */

#undef SOM_CurrentClass
#define SOM_CurrentClass SOMMeta

/*
 *
 *  METHOD: shrclsQueryModuleHandle                         ( ) PRIVATE
 *                                                          (X) PUBLIC
 *  DESCRIPTION:
 *
 *    This method returns the module handle of this class.  If this is the
 *    first invocation, DosQueryModuleHandle is called to save the handle
 *    for future invocations.
 *
 *  RETURN:
 *
 *    0              Unsuccessful
 *    non-zero       module handle
 *
 */

SOM_Scope HMODULE SOMLINK perM_shrclsQueryModuleHandle
    (M_ShrPerson *somSelf)
{
  M_ShrPersonData *somThis = M_ShrPersonGetData(somSelf);
  APIRET rc = 0;
  PSZ pszPathName;

  if (_hmod == NULLHANDLE)
  {
    pszPathName = _somLocateClassFile(SOMClassMgrObject,
        SOM_IdFromString(_somGetName(somSelf)), 0, 0);
    rc = DosQueryModuleHandle(pszPathName, &_hmod);
  }

  return (rc ? NULLHANDLE : _hmod);
}

/*
 *
 *  OVERRIDE: wpclsInitData
 *
 *  DESCRIPTION:
 *
 *    Initalize the class data
 *
 */

SOM_Scope void SOMLINK perM_wpclsInitData(M_ShrPerson *somSelf)
{
  M_ShrPersonData *somThis = M_ShrPersonGetData(somSelf);
  ULONG i;

  /*
   * Initialize the class field info details (see
   * wpclsQueryDetailsInfo for more information).
   */

  memset(&_acfiPerson, 0, sizeof(_acfiPerson));

  for (i=0; i < NUM_PERSONDETAILS_FIELDS; i++)
  {
    /*
     * The class field information for this class is
     * simple -- just strings.
     */

    _acfiPerson[i].cb = sizeof(CLASSFIELDINFO);
    _acfiPerson[i].flData = CFA_STRING | CFA_LEFT |
        CFA_SEPARATOR | CFA_FIREADONLY;
    _acfiPerson[i].flTitle = CFA_CENTER | CFA_SEPARATOR |
        CFA_HORZSEPARATOR | CFA_STRING | CFA_FITITLEREADONLY;
    _acfiPerson[i].flCompare = COMPARE_SUPPORTED | SORTBY_SUPPORTED;
    _acfiPerson[i].DefaultComparison = CMP_GREATER;
    _acfiPerson[i].ulLenFieldData = sizeof(PSZ);
    _acfiPerson[i].ulLenCompareValue = CCHMINSTRING;
  }

  /*
   * Chain the class field information together, making certain
   * the last is NULL.  The order they are chained will determine
   * the order they appear in the details columns.
   */

  _acfiPerson[0].pTitleData = vszPhone;
  _acfiPerson[0].offFieldData = FIELDOFFSET(PERSONDETAILS, pszPhone);
  _acfiPerson[0].pNextFieldInfo = &_acfiPerson[1];

  _acfiPerson[1].pTitleData = vszAddress;
  _acfiPerson[1].offFieldData = FIELDOFFSET(PERSONDETAILS, pszAddress);
  _acfiPerson[1].pNextFieldInfo = &_acfiPerson[2];

  _acfiPerson[2].pTitleData = vszCity;
  _acfiPerson[2].offFieldData = FIELDOFFSET(PERSONDETAILS, pszCity);
  _acfiPerson[2].pNextFieldInfo = &_acfiPerson[3];

  _acfiPerson[3].pTitleData = vszState;
  _acfiPerson[3].offFieldData = FIELDOFFSET(PERSONDETAILS, pszState);
  _acfiPerson[3].pNextFieldInfo = &_acfiPerson[4];

  _acfiPerson[4].pTitleData = vszZipCode;
  _acfiPerson[4].offFieldData = FIELDOFFSET(PERSONDETAILS, pszZipCode);
  _acfiPerson[4].pNextFieldInfo = NULL;

  parent_wpclsInitData(somSelf);
}

SOM_Scope ULONG SOMLINK perM_wpclsQueryDetailsInfo
    (M_ShrPerson *somSelf, PCLASSFIELDINFO
    *ppClassFieldInfo, PULONG pSize)
{
  M_ShrPersonData *somThis = M_ShrPersonGetData(somSelf);
  ULONG ulSuperclassColumns, i;
  PCLASSFIELDINFO pCFI;

  ulSuperclassColumns = parent_wpclsQueryDetailsInfo(somSelf,
      ppClassFieldInfo, pSize);

  /*
   * If the request was for the size of the details column
   * data.  Add the size needed by the person details.
   */

  if (pSize)
    *pSize += sizeof(PERSONDETAILS);

  /* If the request was for the chained CLASSFIELDINFO structures,
   * link ShrPerson's into the chain.
   *
   * If the beginning of the chain is NULL, assign the address
   * of ShrPerson's first CLASSFIELDINFO structure to
   * *ppClassFieldInfo.  Otherwise *ppClassFieldInfo points
   * to the first column description in the chain.  We need
   * to walk the chain and link our CLASSFIELDINFO structures
   * at the end.
   */

  if (ppClassFieldInfo)
  {
    pCFI = *ppClassFieldInfo;

    if (pCFI)
    {
      for (i=0; i < ulSuperclassColumns; i++)
        if (pCFI->pNextFieldInfo)
          pCFI = pCFI->pNextFieldInfo;

      pCFI->pNextFieldInfo = _acfiPerson;
    }
    else
    {
      *ppClassFieldInfo = _acfiPerson;
    }
  }

  return ulSuperclassColumns + NUM_PERSONDETAILS_FIELDS;
}

/*
 *
 *  OVERRIDE: wpclsQueryTitle                              ( ) PRIVATE
 *                                                         (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Return the string "Person".
 *
 */

SOM_Scope PSZ SOMLINK perM_wpclsQueryTitle(M_ShrPerson *somSelf)
{
  return vszPersonTitle;
}

/*
 *
 *  OVERRIDE: wpclsQueryIconData                           ( ) PRIVATE
 *                                                         (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Return the class icon
 *
 */

SOM_Scope ULONG SOMLINK perM_wpclsQueryIconData
    (M_ShrPerson *somSelf, PICONINFO pIconInfo)
{
  if (pIconInfo)
  {
     pIconInfo->fFormat = ICON_RESOURCE;
     pIconInfo->hmod = _shrclsQueryModuleHandle(somSelf);
     pIconInfo->resid = IDP_PERSON;
  }

  return (sizeof(ICONINFO));
}

/*
 *
 *  OVERRIDE: wpclsQueryDefaultView                        ( ) PRIVATE
 *                                                         (X) PUBLIC
 *  DESCRIPTION:
 *
 *    Returns the default view for a new instance of this object.
 *
 */

SOM_Scope ULONG SOMLINK perM_wpclsQueryDefaultView(M_ShrPerson *somSelf)
{
  return OPEN_SETTINGS;
}


text:
// ------------------------------------------------------------------------------
//  <auto-generated>
//      This code was generated by SpecFlow (http://www.specflow.org/).
//      SpecFlow Version:1.9.0.77
//      SpecFlow Generator Version:1.9.0.0
//      Runtime Version:4.0.30319.18449
//
//      Changes to this file may cause incorrect behavior and will be lost if
//      the code is regenerated.
//  </auto-generated>
// ------------------------------------------------------------------------------
#region Designer generated code
#pragma warning disable
namespace SurgicorSpike.AcceptanceTests.Features
{
    using TechTalk.SpecFlow;

    [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.9.0.77")]
    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [NUnit.Framework.TestFixtureAttribute()]
    [NUnit.Framework.DescriptionAttribute("User can register")]
    public partial class UserCanRegisterFeature
    {

        private static TechTalk.SpecFlow.ITestRunner testRunner;

#line 1 "Registration.feature"
#line hidden

        [NUnit.Framework.TestFixtureSetUpAttribute()]
        public virtual void FeatureSetup()
        {
            testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner();
            TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "User can register", "As a website visitor\r\nI want to register a new user account\r\nIn order to log in a" +
                    "nd start using the application", ProgrammingLanguage.CSharp, ((string[])(null)));
            testRunner.OnFeatureStart(featureInfo);
        }

        [NUnit.Framework.TestFixtureTearDownAttribute()]
        public virtual void FeatureTearDown()
        {
            testRunner.OnFeatureEnd();
            testRunner = null;
        }

        [NUnit.Framework.SetUpAttribute()]
        public virtual void TestInitialize()
        {
        }

        [NUnit.Framework.TearDownAttribute()]
        public virtual void ScenarioTearDown()
        {
            testRunner.OnScenarioEnd();
        }

        public virtual void ScenarioSetup(TechTalk.SpecFlow.ScenarioInfo scenarioInfo)
        {
            testRunner.OnScenarioStart(scenarioInfo);
        }

        public virtual void ScenarioCleanup()
        {
            testRunner.CollectScenarioErrors();
        }

        public virtual void FeatureBackground()
        {
#line 6
#line 7
 testRunner.Given("the feature is available in \"development\"", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");
#line hidden
        }

        [NUnit.Framework.TestAttribute()]
        [NUnit.Framework.DescriptionAttribute("Create User")]
        public virtual void CreateUser()
        {
            TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Create User", ((string[])(null)));
#line 9
this.ScenarioSetup(scenarioInfo);
#line 6
this.FeatureBackground();
#line 10
 testRunner.Given("I have navigated to the registration page", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");
#line 11
 testRunner.When("I have entered a random email address into the email address field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When ");
#line 12
 testRunner.And("I have filled in the rest of the required fields", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 13
 testRunner.And("I have clicked the register button", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And ");
#line 14
 testRunner.Then("I should see the confirmation screen", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then ");
#line hidden
            this.ScenarioCleanup();
        }
    }
}
#pragma warning restore
#endregion


text:
namespace views {

// static
const char Checkbox::kViewClassName[] = "Checkbox";

Checkbox::Checkbox(const base::string16& label)
    : LabelButton(NULL, label),
      checked_(false) {
  SetHorizontalAlignment(gfx::ALIGN_LEFT);
  SetFocusForPlatform();

  if (UseMd()) {
    set_request_focus_on_press(false);
    SetInkDropMode(PlatformStyle::kUseRipples ? InkDropMode::ON
                                              : InkDropMode::OFF);
    set_has_ink_drop_action_on_click(true);
    SetFocusPainter(nullptr);
  } else {
    std::unique_ptr<LabelButtonBorder> button_border(new LabelButtonBorder());
    // Inset the trailing side by a couple pixels for the focus border.
    button_border->set_insets(gfx::Insets(0, 0, 0, 2));
    SetBorder(std::move(button_border));
    set_request_focus_on_press(true);

    ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();

    // Unchecked/Unfocused images.
    SetCustomImage(false, false, STATE_NORMAL,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX));
    SetCustomImage(false, false, STATE_HOVERED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_HOVER));
    SetCustomImage(false, false, STATE_PRESSED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_PRESSED));
    SetCustomImage(false, false, STATE_DISABLED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_DISABLED));

    // Checked/Unfocused images.
    SetCustomImage(true, false, STATE_NORMAL,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_CHECKED));
    SetCustomImage(true, false, STATE_HOVERED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_CHECKED_HOVER));
    SetCustomImage(true, false, STATE_PRESSED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_CHECKED_PRESSED));
    SetCustomImage(true, false, STATE_DISABLED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_CHECKED_DISABLED));

    // Unchecked/Focused images.
    SetCustomImage(false, true, STATE_NORMAL,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_FOCUSED));
    SetCustomImage(false, true, STATE_HOVERED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_FOCUSED_HOVER));
    SetCustomImage(false, true, STATE_PRESSED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_FOCUSED_PRESSED));

    // Checked/Focused images.
    SetCustomImage(true, true, STATE_NORMAL,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_FOCUSED_CHECKED));
    SetCustomImage(true, true, STATE_HOVERED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_FOCUSED_CHECKED_HOVER));
    SetCustomImage(true, true, STATE_PRESSED,
                   *rb.GetImageSkiaNamed(IDR_CHECKBOX_FOCUSED_CHECKED_PRESSED));
  }

  // Limit the checkbox height to match the legacy appearance.
  const gfx::Size preferred_size(LabelButton::GetPreferredSize());
  SetMinSize(gfx::Size(0, preferred_size.height() + 4));
}

Checkbox::~Checkbox() {
}

void Checkbox::SetChecked(bool checked) {
  checked_ = checked;
  UpdateImage();
}

// static
bool Checkbox::UseMd() {
  return ui::MaterialDesignController::IsSecondaryUiMaterial();
}

void Checkbox::Layout() {
  LabelButton::Layout();

  if (!UseMd()) {
    // Construct a focus painter that only surrounds the label area.
    gfx::Rect rect = label()->GetMirroredBounds();
    rect.Inset(-2, 3);
    SetFocusPainter(Painter::CreateDashedFocusPainterWithInsets(gfx::Insets(
        rect.y(), rect.x(), height() - rect.bottom(), width() - rect.right())));
  }
}

const char* Checkbox::GetClassName() const {
  return kViewClassName;
}

void Checkbox::GetAccessibleNodeData(ui::AXNodeData* node_data) {
  LabelButton::GetAccessibleNodeData(node_data);
  node_data->role = ui::AX_ROLE_CHECK_BOX;
  if (checked())
    node_data->AddStateFlag(ui::AX_STATE_CHECKED);
  if (enabled()) {
    if (checked()) {
      node_data->AddIntAttribute(ui::AX_ATTR_ACTION,
                                 ui::AX_SUPPORTED_ACTION_UNCHECK);
    } else {
      node_data->AddIntAttribute(ui::AX_ATTR_ACTION,
                                 ui::AX_SUPPORTED_ACTION_CHECK);
    }
  }
}

void Checkbox::OnPaint(gfx::Canvas* canvas) {
  LabelButton::OnPaint(canvas);

  if (!UseMd() || !HasFocus())
    return;

  SkPaint focus_paint;
  focus_paint.setAntiAlias(true);
  focus_paint.setColor(
      SkColorSetA(GetNativeTheme()->GetSystemColor(
                      ui::NativeTheme::kColorId_FocusedBorderColor),
                  0x66));
  focus_paint.setStyle(SkPaint::kStroke_Style);
  focus_paint.setStrokeWidth(2);
  PaintFocusRing(canvas, focus_paint);
}

void Checkbox::OnFocus() {
  LabelButton::OnFocus();
  if (!UseMd())
    UpdateImage();
}

void Checkbox::OnBlur() {
  LabelButton::OnBlur();
  if (!UseMd())
    UpdateImage();
}

void Checkbox::OnNativeThemeChanged(const ui::NativeTheme* theme) {
  LabelButton::OnNativeThemeChanged(theme);
  if (UseMd())
    UpdateImage();
}

std::unique_ptr<InkDropRipple> Checkbox::CreateInkDropRipple() const {
  // The "small" size is 21dp, the large size is 1.33 * 21dp = 28dp.
  const gfx::Size size(21, 21);
  std::unique_ptr<InkDropRipple> ripple(new SquareInkDropRipple(
      CalculateLargeInkDropSize(size), kInkDropLargeCornerRadius, size,
      kInkDropSmallCornerRadius, image()->GetMirroredBounds().CenterPoint(),
      GetInkDropBaseColor(), ink_drop_visible_opacity()));
  return ripple;
}

SkColor Checkbox::GetInkDropBaseColor() const {
  return GetNativeTheme()->GetSystemColor(
      ui::NativeTheme::kColorId_ButtonEnabledColor);
}

gfx::ImageSkia Checkbox::GetImage(ButtonState for_state) const {
  if (UseMd()) {
    return gfx::CreateVectorIcon(
        GetVectorIcon(), 16,
        // When not checked, the icon color matches the button text color.
        GetNativeTheme()->GetSystemColor(
            checked_ ? ui::NativeTheme::kColorId_FocusedBorderColor
                     : ui::NativeTheme::kColorId_ButtonEnabledColor));
  }

  const size_t checked_index = checked_ ? 1 : 0;
  const size_t focused_index = HasFocus() ? 1 : 0;
  if (for_state != STATE_NORMAL &&
      images_[checked_index][focused_index][for_state].isNull())
    return images_[checked_index][focused_index][STATE_NORMAL];
  return images_[checked_index][focused_index][for_state];
}

void Checkbox::SetCustomImage(bool checked,
                              bool focused,
                              ButtonState for_state,
                              const gfx::ImageSkia& image) {
  const size_t checked_index = checked ? 1 : 0;
  const size_t focused_index = focused ? 1 : 0;
  images_[checked_index][focused_index][for_state] = image;
  UpdateImage();
}

void Checkbox::PaintFocusRing(gfx::Canvas* canvas, const SkPaint& paint) {
  gfx::RectF focus_rect(image()->bounds());
  canvas->DrawRoundRect(focus_rect, 2.f, paint);
}

const gfx::VectorIcon& Checkbox::GetVectorIcon() const {
  return checked() ? kCheckboxActiveIcon : kCheckboxNormalIcon;
}

void Checkbox::NotifyClick(const ui::Event& event) {
  SetChecked(!checked());
  LabelButton::NotifyClick(event);
}

ui::NativeTheme::Part Checkbox::GetThemePart() const {
  return ui::NativeTheme::kCheckbox;
}

void Checkbox::GetExtraParams(ui::NativeTheme::ExtraParams* params) const {
  LabelButton::GetExtraParams(params);
  params->button.checked = checked_;
}

}  // namespace views


text:
require 'mongoid-rspec'

RSpec.configure do |config|
  config.include Mongoid::Matchers, type: :model
end


text:
package com.edinarobotics.utils.sensors;

/**
 * This filter implements a simple average of several values. It will average a
 * maximum number of values given in the constructor. If less than this maximum
 * number of values have been provided through the {@link #filter} method,
 * values not provided will be replaced be {@code Double.NaN} and will not
 * affect the average.
 */
public class SimpleAverageFilter implements FilterDouble{
    private int maxReadings;
    double[] readings;

    /**
     * Constructs a SimpleAverageFilter that will average the given number
     * of readings.
     * @param maxReadingsToAverage the maximum number of readings to average.
     */
    public SimpleAverageFilter(int maxReadingsToAverage){
        this.maxReadings =  maxReadingsToAverage;
        readings = new double[maxReadingsToAverage];
        for(int i=0;i < readings.length; i++){
            readings[i] = Double.NaN;
        }
    }

    /**
     * Returns the simple average of this reading and the previous readings.
     * The maximum number of readings to include in this average is given in
     * the constructor.
     * @param latestValue the latest value to filter.
     * @return the current average of the provided values.
     */
    public double filter(double latestValue){
        shiftArray();
        readings[0] = latestValue;
        return addRealValues()/countRealValues();
    }

    /**
     * Sums all values stored in this class that are not {@code Double.NaN}.
     * @return the sum of all real values stored in this class.
     */
    private double addRealValues(){
        double sum = 0;
        for(int i=0; i < readings.length; i++){
            if(!(new Double(readings[i]).isNaN())){
                sum += readings[i];
            }
        }
        return sum;
    }

    /**
     * Returns the number of values stored in this class that are not
     * {@code Double.NaN}.
     * @return the number of non-{@code Double.NaN} values.
     */
    private int countRealValues(){
        int count = 0;
        for(int i=0; i < readings.length; i++){
            if(!(new Double(readings[i]).isNaN())){
                count++;
            }
        }
        return count;
    }

    /**
     * Shifts each value of the internal array in this class over one index by
     * adding {@code 1} to the index of each current value and dropping
     * any values that overflow the array.
     * and sets the element at {@code [0]} to {@code Double.NaN}.
     */
    private void shiftArray(){
        double[] tempArray = new double[readings.length];
        for(int index = 1; index < tempArray.length; index++)
        {
           tempArray[index] = readings[index-1];
        }
        tempArray[0] = Double.NaN;

        readings = tempArray;
    }
}


text:
module HpiHelper
  def list_related_locations( preferences )
    output = []

    (0..1).each do |i|
      output << _list_related_locations( preferences.search_id( i ), preferences )
    end

    output.join( "<br />" ).html_safe
  end

  def _list_related_locations( search_id, preferences )
    if uri = preferences.selected_location_uri( search_id )
      lc = Location.new( uri )

      within = render_place_link( lc.within, preferences, search_id ) if lc.within
      contains = lc.contains
                   .sort {|place0, place1| place0["label"] <=> place1["label"]}
                   .map {|place| render_place_link( place, preferences, search_id )}
      name = preferences.selected_location_name( search_id )

      if within && contains.length > 0
        str = "#{name} is part of #{within}, and contains: #{contains.join( ", " )}"
      elsif within
        str = "#{name} is part of #{within}"
      elsif contains.length > 0
        str = "#{name} contains: #{contains.join( ", " )}"
      else
        str = nil
      end

      str.html_safe if str
    end
  end

  def render_place_link( place, preferences, search_id )
    loc = preferences.attribute_with_search_id( "loc", search_id )
    loc_uri = preferences.attribute_with_search_id( "loc_uri", search_id )
    name = (place["label"]).kind_of?(Hash) ? place["label"]["@value"] : place["label"]

    link_to( name, preferences.as_path( :hpi, {loc => name, loc_uri => place["@id"]} ))
  end

end


text:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Industry Giant II - Multiplayer Patcher")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("IG2Patcher.Properties")]
[assembly: AssemblyCopyright("Copyright ©  2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("48f57332-b0cf-414e-a575-c1a4ba1580c3")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
[assembly: AssemblyVersion("1.0.2.0")]
[assembly: AssemblyFileVersion("1.0.2.0")]


text:
package org.qi4j.migration;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import org.hamcrest.CoreMatchers;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
import org.qi4j.api.activation.ActivationException;
import org.qi4j.api.service.importer.NewObjectImporter;
import org.qi4j.api.unitofwork.UnitOfWork;
import org.qi4j.api.unitofwork.UnitOfWorkCompletionException;
import org.qi4j.bootstrap.AssemblyException;
import org.qi4j.bootstrap.ModuleAssembly;
import org.qi4j.bootstrap.SingletonAssembler;
import org.qi4j.io.Input;
import org.qi4j.io.Output;
import org.qi4j.io.Receiver;
import org.qi4j.io.Sender;
import org.qi4j.migration.assembly.EntityMigrationOperation;
import org.qi4j.migration.assembly.MigrationBuilder;
import org.qi4j.migration.assembly.MigrationOperation;
import org.qi4j.spi.entitystore.BackupRestore;
import org.qi4j.spi.entitystore.helpers.JSONKeys;
import org.qi4j.spi.entitystore.helpers.StateStore;
import org.qi4j.test.AbstractQi4jTest;
import org.qi4j.test.EntityTestAssembler;

import static org.junit.Assert.assertThat;

/**
 * JAVADOC
 */
public class MigrationTest
    extends AbstractQi4jTest
{
    @Override
    public void assemble( ModuleAssembly module )
        throws AssemblyException
    {
        new EntityTestAssembler().assemble( module );

        module.objects( MigrationEventLogger.class );
        module.importedServices( MigrationEventLogger.class ).importedBy( NewObjectImporter.class );

        module.entities( TestEntity1_0.class,
                         TestEntity1_1.class,
                         TestEntity2_0.class,
                         org.qi4j.migration.moved.TestEntity2_0.class );

        MigrationBuilder migration = new MigrationBuilder( "1.0" );
        migration.
            toVersion( "1.1" ).
            renameEntity( TestEntity1_0.class.getName(), TestEntity1_1.class.getName() ).
            atStartup( new CustomFixOperation( "Fix for 1.1" ) ).
            forEntities( TestEntity1_1.class.getName() ).
            renameProperty( "foo", "newFoo" ).
            renameManyAssociation( "fooManyAssoc", "newFooManyAssoc" ).
            renameAssociation( "fooAssoc", "newFooAssoc" ).
            end().
            toVersion( "2.0" ).
            renameEntity( TestEntity1_1.class.getName(), TestEntity2_0.class.getName() ).
            atStartup( new CustomFixOperation( "Fix for 2.0, 1" ) ).
            atStartup( new CustomFixOperation( "Fix for 2.0, 2" ) ).
            forEntities( TestEntity2_0.class.getName() ).
            addProperty( "bar", "Some value" ).
            removeProperty( "newFoo", "Some value" ).
            custom( new CustomBarOperation() ).
            end().
            toVersion( "3.0" ).
            renamePackage( "org.qi4j.migration", "org.qi4j.migration.moved" ).
            withEntities( "TestEntity2_0" ).
            end();

        module.services( MigrationService.class ).setMetaInfo( migration );
        module.entities( MigrationConfiguration.class );
        module.forMixin( MigrationConfiguration.class ).declareDefaults().lastStartupVersion().set( "1.0" );
    }

    @Test
    public void testMigration()
        throws UnitOfWorkCompletionException, IOException, ActivationException, AssemblyException
    {
        // Set up version 1
        String id;
        StringInputOutput data_v1 = new StringInputOutput();
        {
            SingletonAssembler v1 = new SingletonAssembler()
            {
                @Override
                public void assemble( ModuleAssembly module )
                    throws AssemblyException
                {
                    MigrationTest.this.assemble( module );
                    module.layer().application().setVersion( "1.0" );
                }
            };

            UnitOfWork uow = v1.module().newUnitOfWork();
            TestEntity1_0 entity = uow.newEntity( TestEntity1_0.class );
            entity.foo().set( "Some value" );
            entity.fooManyAssoc().add( entity );
            entity.fooAssoc().set( entity );
            id = entity.identity().get();
            uow.complete();

            BackupRestore backupRestore = v1.module()
                .findService( BackupRestore.class )
                .get();
            backupRestore.backup().transferTo( data_v1 );
        }

        // Set up version 1.1
        StringInputOutput data_v1_1 = new StringInputOutput();
        {
            SingletonAssembler v1_1 = new SingletonAssembler()
            {
                @Override
                public void assemble( ModuleAssembly module )
                    throws AssemblyException
                {
                    MigrationTest.this.assemble( module );
                    module.layer().application().setVersion( "1.1" );
                }
            };

            BackupRestore testData = v1_1.module().findService( BackupRestore.class ).get();
            data_v1.transferTo( testData.restore() );

            UnitOfWork uow = v1_1.module().newUnitOfWork();
            TestEntity1_1 entity = uow.get( TestEntity1_1.class, id );
            assertThat( "Property has been renamed", entity.newFoo().get(), CoreMatchers.equalTo( "Some value" ) );
            assertThat( "ManyAssociation has been renamed", entity.newFooManyAssoc().count(), CoreMatchers.equalTo( 1 ) );
            assertThat( "Association has been renamed", entity.newFooAssoc().get(), CoreMatchers.equalTo( entity ) );
            uow.complete();

            testData.backup().transferTo( data_v1_1 );
        }

        // Set up version 2.0
        {
            SingletonAssembler v2_0 = new SingletonAssembler()
            {
                @Override
                public void assemble( ModuleAssembly module )
                    throws AssemblyException
                {
                    MigrationTest.this.assemble( module );
                    module.layer().application().setVersion( "2.0" );
                }
            };

            BackupRestore testData = v2_0.module().findService( BackupRestore.class ).get();

            // Test migration from 1.0 -> 2.0
            {
                data_v1.transferTo( testData.restore() );
                UnitOfWork uow = v2_0.module().newUnitOfWork();
                TestEntity2_0 entity = uow.get( TestEntity2_0.class, id );
                assertThat( "Property has been created", entity.bar().get(), CoreMatchers.equalTo( "Some value" ) );
                assertThat( "Custom Property has been created", entity.customBar().get(), CoreMatchers.equalTo( "Hello Some value" ) );
                assertThat( "ManyAssociation has been renamed", entity.newFooManyAssoc().count(), CoreMatchers.equalTo( 1 ) );
                assertThat( "Association has been renamed", entity.newFooAssoc().get(), CoreMatchers.equalTo( entity ) );
                uow.complete();
            }
        }

        // Set up version 3.0
        {
            SingletonAssembler v3_0 = new SingletonAssembler()
            {
                @Override
                public void assemble( ModuleAssembly module )
                    throws AssemblyException
                {
                    MigrationTest.this.assemble( module );
                    module.layer().application().setVersion( "3.0" );
                }
            };

            BackupRestore testData = v3_0.module().findService( BackupRestore.class ).get();
            data_v1_1.transferTo( testData.restore() );

            // Test migration from 1.0 -> 3.0
            {
                data_v1.transferTo( testData.restore() );
                UnitOfWork uow = v3_0.module().newUnitOfWork();
                org.qi4j.migration.moved.TestEntity2_0 entity = uow.get( org.qi4j.migration.moved.TestEntity2_0.class, id );
                uow.complete();
            }
        }
    }

    private static class CustomBarOperation
        implements EntityMigrationOperation
    {
        @Override
        public boolean upgrade( JSONObject state, StateStore stateStore, Migrator migrator )
            throws JSONException
        {
            JSONObject properties = (JSONObject) state.get( JSONKeys.PROPERTIES );

            return migrator.addProperty( state, "customBar", "Hello " + properties.getString( "bar" ) );
        }

        @Override
        public boolean downgrade( JSONObject state, StateStore stateStore, Migrator migrator )
            throws JSONException
        {
            return migrator.removeProperty( state, "customBar" );
        }
    }

    private static class CustomFixOperation
        implements MigrationOperation
    {
        String msg;

        private CustomFixOperation( String msg )
        {
            this.msg = msg;
        }

        @Override
        public void upgrade( StateStore stateStore, Migrator migrator )
            throws IOException
        {
            System.out.println( msg );
        }

        @Override
        public void downgrade( StateStore stateStore, Migrator migrator )
            throws IOException
        {
            System.out.println( msg );
        }
    }

    private static class StringInputOutput
        implements Output<String, IOException>, Input<String, IOException>
    {
        final StringBuilder builder = new StringBuilder();

        @Override
        public <SenderThrowableType extends Throwable> void receiveFrom( Sender<? extends String, SenderThrowableType> sender )
            throws IOException, SenderThrowableType
        {
            sender.sendTo( new Receiver<String, IOException>()
            {
                @Override
                public void receive( String item )
                    throws IOException
                {
                    builder.append( item ).append( "\n" );
                }
            } );
        }

        @Override
        public <ReceiverThrowableType extends Throwable> void transferTo( Output<? super String, ReceiverThrowableType> output )
            throws IOException, ReceiverThrowableType
        {
            output.receiveFrom( new Sender<String, IOException>()
            {
                @Override
                public <ReceiverThrowableType extends Throwable> void sendTo( Receiver<? super String, ReceiverThrowableType> receiver )
                    throws ReceiverThrowableType, IOException
                {
                    BufferedReader reader = new BufferedReader( new StringReader( builder.toString() ) );
                    String line;
                    try
                    {
                        while( ( line = reader.readLine() ) != null )
                        {
                            receiver.receive( line );
                        }
                    }
                    finally
                    {
                        reader.close();
                    }
                }
            } );
        }

        @Override
        public String toString()
        {
            return builder.toString();
        }
    }

}


text:
1.2.0 (2014-06-23)

* HTTP version 1.1.0 is now the minimum required version.
* Compiled binaries are now shipped with proper documentation.
* Enforce unix style line endings in a http response

1.1.0 (2014-05-23)

* Fix dispatcher message display order.

1.1.0-beta (2014-05-18)

* Add an ability to specify multiple MOTD sources.

1.0.0 (2014-05-15)

* Initial public release.


text:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<string name="autofill_clear_local_copy_button">"Effacer la copie"</string>
<string name="autofill_cc_amex">"American Express"</string>
<string name="autofill_cc_diners">"Diners Club"</string>
<string name="autofill_cc_discover">"Discover"</string>
<string name="autofill_cc_jcb">"JCB"</string>
<string name="autofill_cc_mastercard">"Mastercard"</string>
<string name="autofill_cc_mir">"Mir"</string>
<string name="autofill_cc_union_pay">"China UnionPay"</string>
<string name="autofill_cc_visa">"Visa"</string>
<string name="autofill_address_summary_separator">", "</string>
<string name="autofill_scan_credit_card">"Lire une nouvelle carte"</string>
<string name="autofill_card_unmask_prompt_error_try_again_cvc">"Veuillez vérifier votre code CVC et réessayer."</string>
<string name="autofill_card_unmask_prompt_error_try_again_expiration_date">"Veuillez vérifier la date d\'expiration, puis réessayer"</string>
<string name="autofill_card_unmask_prompt_error_try_again_cvc_and_expiration">"Veuillez vérifier la date d\'expiration et le code CVC, puis réessayez."</string>
<string name="autofill_card_unmask_prompt_error_try_again_expiration_month">"Veuillez vérifier le mois d\'expiration, puis réessayer"</string>
<string name="autofill_card_unmask_prompt_error_try_again_expiration_year">"Veuillez vérifier l\'année d\'expiration, puis réessayer"</string>
<string name="autofill_card_unmask_prompt_storage_checkbox">"Conserver une copie de cette carte sur cet appareil"</string>
<string name="autofill_card_unmask_prompt_storage_tooltip">"Si cette case est cochée, Chromium enregistre une copie de votre carte sur cet appareil pour vous permettre de remplir plus rapidement les formulaires."</string>
<string name="autofill_card_unmask_verification_in_progress">"Validation de la carte…"</string>
<string name="autofill_card_unmask_verification_success">"Carte validée"</string>
<string name="autofill_card_unmask_expiration_date_separator">"/"</string>
<string name="autofill_card_unmask_new_card_link">"Nouvelle carte ?"</string>
<string name="http_post_warning">"La page que vous recherchez a utilisé des informations que vous avez envoyées. Si vous revenez sur cette page, chaque action précédemment effectuée sera répétée. Souhaitez-vous continuer ?"</string>
<string name="http_post_warning_resend">"Continuer"</string>
<string name="login_dialog_title">"Authentification requise"</string>
<string name="login_dialog_username_field">"Nom d\'utilisateur :"</string>
<string name="login_dialog_password_field">"Mot de passe :"</string>
<string name="login_dialog_ok_button_label">"Se connecter"</string>
<string name="sad_tab_title">"Aie aie aie"</string>
<string name="sad_tab_message">"Une erreur s\'est produite lors de l\'affichage de la page Web."</string>
<string name="sad_tab_oom_message">"Chromium n\'avait pas suffisamment de mémoire pour afficher cette page Web."</string>
<string name="sad_tab_reload_label">"Actualiser"</string>
<string name="sad_tab_send_feedback_label">"Envoyer"</string>
<string name="sad_tab_reload_title">"Impossible d\'ouvrir cette page"</string>
<string name="sad_tab_oom_message_tabs">"Essayez de fermer les autres onglets ou programmes pour libérer de la mémoire."</string>
<string name="sad_tab_oom_message_notabs">"Essayez de fermer les autres programmes pour libérer de la mémoire."</string>
<string name="sad_tab_reload_try">"Essayez les astuces suivantes :"</string>
<string name="sad_tab_reload_incognito">"Ouvrez la page en mode navigation privée"</string>
<string name="sad_tab_reload_close_notabs">"Fermez les autres applications"</string>
<string name="sad_tab_reload_restart_browser">"Relancez Chromium"</string>
<string name="sad_tab_reload_restart_device">"Redémarrer l\'appareil"</string>
<string name="sad_tab_reload_learn_more">"Learn more"</string>
<string name="sad_tab_uma_optin">"Envoyer automatiquement les statistiques d\'utilisation et les rapports d\'erreur à Google"</string>
<string name="new_tab_otr_title">"Vous êtes passé en mode navigation privée"</string>
<string name="new_tab_otr_subtitle">"Vous pouvez désormais naviguer de façon privée. Les autres utilisateurs de cet appareil ne verront pas votre activité. Les téléchargements et les favoris seront cependant enregistrés."</string>
<string name="new_tab_otr_not_saved">"Les informations suivantes ne seront pas enregistrées dans Chrome :

Votre historique de navigation

Les cookies et les données de sites

Les informations saisies dans les formulaires

"</string>
<string name="new_tab_otr_visible">"Votre activité peut rester visible par :

Les sites Web que vous consultez

Votre employeur ou votre établissement scolaire

Votre fournisseur d\'accès à Internet

"</string>
<string name="snippets_disabled_signed_out_instructions">"Pour obtenir une recommandation de contenu personnalisé de la part de Google, connectez-vous à Chrome."</string>
<string name="snippets_disabled_generic_prompt">"Obtenir une recommandation de contenu personnalisé"</string>
<string name="ntp_title_no_suggestions">"C\'est tout !"</string>
<string name="page_info_permission_subresource_filter_subtitle">"Subresource filter activated"</string>
<string name="payments_name_field_in_contact_details">"Nom"</string>
<string name="payments_save_card_to_device_checkbox">"Enregistrer cette carte sur cet appareil"</string>
<string name="payments_accepted_cards_label">"Cartes acceptées"</string>
<string name="payments_method_of_payment_label">"Mode de paiement"</string>
<string name="payments_contact_details_label">"Coordonnées"</string>
<string name="payments_add_contact_details_label">"Ajouter des coordonnées"</string>
<string name="payments_edit_contact_details_label">"Modifier les coordonnées"</string>
<string name="payments_add_card_label">"Ajouter une carte"</string>
<string name="payments_add_billing_address">"Ajouter une adresse de facturation"</string>
<string name="payments_add_name_on_card">"Ajouter le nom sur la carte"</string>
<string name="payments_add_valid_card_number">"Ajouter un numéro de carte valide"</string>
<string name="payments_add_more_information">"Ajouter d\'autres informations"</string>
<string name="payments_edit_card">"Modifier la carte"</string>
<string name="payments_credit_card_expiration_date_abbr">"Expire en %1$s/%2$s"</string>
<string name="payments_add_phone_number">"Saisir num tél"</string>
<string name="payments_add_recipient">"Ajouter un nom"</string>
<string name="payments_add_valid_address">"Ajouter une adresse valide"</string>
<string name="payments_add_email">"Ajouter une adresse e-mail"</string>
<string name="payments_add_name">"Ajouter un nom"</string>
<string name="payments_order_summary_label">"Récapitulatif de la commande"</string>
<string name="payments_edit_button">"Modifier"</string>
<string name="payments_pay_button">"Paiement"</string>
<string name="payments_loading_message">"Chargement en cours"</string>
<string name="payments_processing_message">"Traitement en cours"</string>
<string name="payments_error_message">"Une erreur s\'est produite lors du traitement de votre commande. Veuillez réessayer."</string>
<string name="payments_add_contact">"Ajouter des coordonnées"</string>
<string name="payments_add_card">"Ajouter une carte"</string>
<string name="payments_add_address">"Ajouter une adresse"</string>
<string name="payments_edit_address">"Modifier l\'adresse"</string>
<string name="payments_checking_option">"Vérification en cours…"</string>
<string name="payments_updated_label">"Mis à jour"</string>
<string name="payments_card_and_address_settings">"Vous pouvez gérer les cartes et les adresses dans les BEGIN_LINKparamètresEND_LINK."</string>
<string name="payments_card_and_address_settings_signed_in">"Les cartes et les adresses proviennent de Chrome et de votre compte Google (%1$s). Vous pouvez les gérer dans les BEGIN_LINKParamètresEND_LINK."</string>
<string name="payments_card_and_address_settings_signed_out">"Les cartes et les adresses proviennent de Chrome. Vous pouvez les gérer dans les BEGIN_LINKParamètresEND_LINK."</string>
<string name="payments_required_field_message">"* Champ obligatoire"</string>
<string name="payments_field_required_validation_message">"Veuillez compléter ce champ."</string>
<string name="payments_phone_invalid_validation_message">"Saisissez un numéro de téléphone valide"</string>
<string name="payments_email_invalid_validation_message">"Saisissez une adresse e-mail valide"</string>
<string name="payments_card_number_invalid_validation_message">"Saisissez un numéro de carte valide"</string>
<string name="payments_card_expiration_invalid_validation_message">"Saisissez une date d\'expiration valide"</string>
<string name="payments_billing_address_required">"Adresse de facturation obligatoire"</string>
<string name="payments_name_on_card_required">"Nom du titulaire de la carte obligatoire"</string>
<string name="payments_card_billing_address_required">"Card billing address required"</string>
<string name="payments_more_information_required">"Veuillez fournir d\'autres informations"</string>
<string name="payments_phone_number_required">"Veuillez saisir le numéro de téléphone."</string>
<string name="payments_recipient_required">"Veuillez saisir un nom"</string>
<string name="payments_invalid_address">"Saisissez une adresse valide"</string>
<string name="payments_email_required">"Veuillez saisir une adresse e-mail"</string>
<string name="payments_name_required">"Veuillez saisir un nom"</string>
<string name="payments_shipping_summary_label">"Adresse de livraison"</string>
<string name="payments_shipping_address_label">"Adresse de livraison"</string>
<string name="payments_shipping_option_label">"Mode d\'expédition"</string>
<string name="payments_select_shipping_address_for_shipping_methods">"Sélectionnez une adresse pour consulter les modes et conditions d\'expédition disponibles"</string>
<string name="payments_unsupported_shipping_address">"Impossible d\'expédier à cette adresse. Sélectionnez-en une autre."</string>
<string name="payments_unsupported_shipping_option">"Mode d\'expédition non disponible. Choisissez-en un autre."</string>
<string name="payments_delivery_summary_label">"Livraison"</string>
<string name="payments_delivery_address_label">"Adresse de livraison"</string>
<string name="payments_delivery_option_label">"Mode de livraison"</string>
<string name="payments_select_delivery_address_for_delivery_methods">"Sélectionnez une adresse pour consulter les modes et conditions de livraison disponibles"</string>
<string name="payments_unsupported_delivery_address">"Impossible de livrer à cette adresse. Sélectionnez-en une autre."</string>
<string name="payments_unsupported_delivery_option">"Mode de livraison non disponible. Choisissez-en un autre."</string>
<string name="payments_pickup_summary_label">"Enlèvement"</string>
<string name="payments_pickup_address_label">"Adresse d\'enlèvement"</string>
<string name="payments_pickup_option_label">"Mode d\'enlèvement"</string>
<string name="payments_select_pickup_address_for_pickup_methods">"Sélectionnez une adresse pour consulter les modes et conditions d\'enlèvement disponibles"</string>
<string name="payments_unsupported_pickup_address">"Enlèvement impossible à cette adresse. Sélectionnez-en une autre."</string>
<string name="payments_unsupported_pickup_option">"Mode d\'enlèvement non disponible. Choisissez-en un autre."</string>
<string name="payments_android_app_error">"Impossible d\'ouvrir l\'application de paiement"</string>
<string name="external_payment_app_leave_incognito_warning">"En payant via une application externe, vous allez quitter le mode navigation privée. Voulez-vous continuer ?"</string>
<string name="color_picker_button_more">"Plus"</string>
<string name="color_picker_hue">"Teinte"</string>
<string name="color_picker_saturation">"Saturation"</string>
<string name="color_picker_value">"Valeur"</string>
<string name="color_picker_button_set">"Définir"</string>
<string name="color_picker_button_cancel">"Annuler"</string>
<string name="color_picker_dialog_title">"Sélectionner couleur"</string>
<string name="color_picker_button_red">"Rouge"</string>
<string name="color_picker_button_cyan">"Cyan"</string>
<string name="color_picker_button_blue">"Bleu"</string>
<string name="color_picker_button_green">"Vert"</string>
<string name="color_picker_button_magenta">"Magenta"</string>
<string name="color_picker_button_yellow">"Jaune"</string>
<string name="color_picker_button_black">"Noir"</string>
<string name="color_picker_button_white">"Blanc"</string>
<string name="choose">"Sélectionner"</string>
</resources>